Statistics.

This commit is contained in:
Kui LIU
2017-09-14 15:00:44 +02:00
parent ffd8deb5b7
commit 14ad7b3c0f
10 changed files with 2140 additions and 0 deletions
@@ -0,0 +1,26 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import edu.lu.uni.serval.utils.FileHelper;
public class FixedProjects {
public static void main(String[] args) throws IOException {
String content = FileHelper.readFile("../FPM_Violations/RQ1/Quantity-per-FixedProj.csv");
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = reader.readLine();
StringBuilder builder = new StringBuilder();
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
// String projectName = elements[0];
builder.append(elements[0] + "\n");
}
reader.close();
FileHelper.outputToFile("../FPM_Violations/RQ1/fixedProjects.list", builder, false);
}
}
@@ -0,0 +1,104 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import edu.lu.uni.serval.utils.FileHelper;
public class ReadSpearmanResults {
public static void main(String[] args) throws IOException {
String fileName = "../FPM_Violations/RQ1/SpearmanResults.list";
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
String str1 = "1";
String str2 = "2";
String str3 = "3";
String str4 = "4";
String str5 = "5";
String str6 = "6";
String str7 = "7";
String str8 = "8";
String str9 = "9";
String str10 = "10";
int counter = 0;
while ((line = reader.readLine()) != null) {
// String[] elements = line.split("");
counter ++;
if ((counter / 10 == 2 || counter / 10 == 4) && counter % 10 == 1) {
str1 += "@@@@1";
str2 += "@@@@2";
str3 += "@@@@3";
str4 += "@@@@4";
str5 += "@@@@5";
str6 += "@@@@6";
str7 += "@@@@7";
str8 += "@@@@8";
str9 += "@@@@9";
str10 += "@@@@10";
}
int n = counter % 10;
switch (n) {
case 1:
str1 += "@" + line;
break;
case 2:
str2 += "@" + line;
break;
case 3:
str3 += "@" + line;
break;
case 4:
str4 += "@" + line;
break;
case 5:
str5 += "@" + line;
break;
case 6:
str6 += "@" + line;
break;
case 7:
str7 += "@" + line;
break;
case 8:
str8 += "@" + line;
break;
case 9:
str9 += "@" + line;
break;
case 0:
str10 += "@" + line;
break;
}
}
reader.close();
str1 = str1.replace(".", ",");
str2 = str2.replace(".", ",");
str3 = str3.replace(".", ",");
str4 = str4.replace(".", ",");
str5 = str5.replace(".", ",");
str6 = str6.replace(".", ",");
str7 = str7.replace(".", ",");
str8 = str8.replace(".", ",");
str9 = str9.replace(".", ",");
str10 = str10.replace(".", ",");
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);
System.out.println(str6);
System.out.println(str7);
System.out.println(str8);
System.out.println(str9);
System.out.println(str10);
}
}
@@ -0,0 +1,362 @@
a <- read.csv("~/Public/git/FPM_Violations/RQ1/TenFolds-Q/Ten-fold-all-fixed-violation-type1-70.csv", header=T)
d<-cor.test( ~ X0 + X0.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = FALSE, sep = "@")
d<-cor.test( ~ X1 + X1.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X2 + X2.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X3 + X3.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X4 + X4.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X5 + X5.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X6 + X6.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X7 + X7.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X8 + X8.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X9 + X9.T,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X0.R + X0.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X1.R + X1.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X2.R + X2.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X3.R + X3.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X4.R + X4.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X5.R + X5.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X6.R + X6.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X7.R + X7.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X8.R + X8.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X9.R + X9.T.R,
data=a, method = "spearman",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X0 + X0.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X1 + X1.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X2 + X2.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X3 + X3.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X4 + X4.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X5 + X5.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X6 + X6.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X7 + X7.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X8 + X8.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X9 + X9.T,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X0.R + X0.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X1.R + X1.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X2.R + X2.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X3.R + X3.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X4.R + X4.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X5.R + X5.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X6.R + X6.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X7.R + X7.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X8.R + X8.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X9.R + X9.T.R,
data=a, method = "pearson",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X0 + X0.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X1 + X1.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X2 + X2.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X3 + X3.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X4 + X4.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X5 + X5.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X6 + X6.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X7 + X7.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X8 + X8.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X9 + X9.T,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X0.R + X0.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X1.R + X1.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X2.R + X2.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X3.R + X3.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X4.R + X4.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X5.R + X5.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X6.R + X6.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X7.R + X7.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X8.R + X8.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
d<-cor.test( ~ X9.R + X9.T.R,
data=a, method = "kendall",
continuity = FALSE,
conf.level = 0.95)
write(c(d$estimate, d$p.value), file = "~/Public/git/FPM_Violations/RQ1/SpearmanResults.list",append = TRUE, sep = "@")
a=1
@@ -0,0 +1,81 @@
package edu.lu.uni.serval.statistics;
public class SpearmanCodeGenerator {
public static void main(String[] args) {
generateSpearmanCode();
}
public static void generateSpearmanCode() {
for (int i = 0; i < 10; i ++) {
String s = "d<-cor.test( ~ X" + i + " + X" + i + ".T, \n";
s += " data=a,";
s += " method = \"spearman\",\n";
s += " continuity = FALSE,\n";
s += " conf.level = 0.95)\n";
if (i == 0) {
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = FALSE, sep = \"@\")\n";
} else {
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = TRUE, sep = \"@\")\n";
}
System.out.println(s);
}
for (int i = 0; i < 10; i ++) {
String s = "d<-cor.test( ~ X" + i + ".R + X" + i + ".T.R, \n";
s += " data=a,";
s += " method = \"spearman\",\n";
s += " continuity = FALSE,\n";
s += " conf.level = 0.95)\n";
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = TRUE, sep = \"@\")\n";
System.out.println(s);
}
for (int i = 0; i < 10; i ++) {
String s = "d<-cor.test( ~ X" + i + " + X" + i + ".T, \n";
s += " data=a,";
s += " method = \"pearson\",\n";
s += " continuity = FALSE,\n";
s += " conf.level = 0.95)\n";
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = TRUE, sep = \"@\")\n";
System.out.println(s);
}
for (int i = 0; i < 10; i ++) {
String s = "d<-cor.test( ~ X" + i + ".R + X" + i + ".T.R, \n";
s += " data=a,";
s += " method = \"pearson\",\n";
s += " continuity = FALSE,\n";
s += " conf.level = 0.95)\n";
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = TRUE, sep = \"@\")\n";
System.out.println(s);
}
for (int i = 0; i < 10; i ++) {
String s = "d<-cor.test( ~ X" + i + " + X" + i + ".T, \n";
s += " data=a,";
s += " method = \"kendall\",\n";
s += " continuity = FALSE,\n";
s += " conf.level = 0.95)\n";
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = TRUE, sep = \"@\")\n";
System.out.println(s);
}
for (int i = 0; i < 10; i ++) {
String s = "d<-cor.test( ~ X" + i + ".R + X" + i + ".T.R, \n";
s += " data=a,";
s += " method = \"kendall\",\n";
s += " continuity = FALSE,\n";
s += " conf.level = 0.95)\n";
s += "write(c(d$estimate, d$p.value), file = \"~/Public/git/FPM_Violations/RQ1/SpearmanResults.list\"," +
"append = TRUE, sep = \"@\")\n";
System.out.println(s);
}
}
}
@@ -0,0 +1,691 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import edu.lu.uni.serval.utils.FileHelper;
import edu.lu.uni.serval.utils.ListSorter;
import edu.lu.uni.serval.utils.MapSorter;
public class Statistic {
public static void main(String[] args) throws IOException {
// /*
// * Quantities' distribution of all violation types.
// */
// quantityOfEachViolationType();
// /*
// * Widespread of each violation type.
// */
// widespreadOfEachViolationType();
// /*
// * Statistics of categories of all violation types.
// */
// statisticWithCategories();
//
// /*
// * Quantity of each violation type in each project.
// */
// reloadData();
//
// /*
// * Quantities' distribution of all fixed violation types.
// * Widespread of each fixed violation type.
// * Statistics of categories of all fixed violation types.
// * Quantity of each fixed violation type in each project.
// */
// statisticOfFixedViolations();
// fixedVSunfixed();
/**
* Do statistics from two files:
*/
statistics("../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv", "");
statistics("../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv", "Fixed");
// fixedVSunfixed();
// String statistic = "../FPM_Violations/OUTPUT";
// List<File> files = FileHelper.getAllFiles(statistic, ".list");
//
// int testAlarms = 0;
// int nullGumTreeResults = 0;
// int nullMappingGumTreeResults = 0;
// int pureDeletion = 0;
// int timeout = 0;
// int noSourceCodeChagnes = 0;
// int largeHunk = 0;
// int nullSourceCode = 0;
// for (File file : files) {
// String content = FileHelper.readFile(file);
// BufferedReader reader = new BufferedReader(new StringReader(content));
// String line = null;
// try {
// while ((line = reader.readLine()) != null) {
// if (line.startsWith("test")) {
// testAlarms += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("nullGum")) {
// nullGumTreeResults += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("nullMap")) {
// nullMappingGumTreeResults += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("pure")) {
// pureDeletion += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("Time")) {
// timeout += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("noSourceCodeChagnes")) {
// noSourceCodeChagnes += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("largeHunk")) {
// largeHunk += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// } else if (line.startsWith("nullSourceCode")) {
// nullSourceCode += Integer.parseInt(line.substring(line.lastIndexOf(":") + 1).trim());
// }
// }
// } catch (IOException e) {
// e.printStackTrace();
// } finally {
// try {
// reader.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
//
//// TestAlarms: 5175
//// nullGumTreeResults: 13449
//// nullMappingGumTreeResults: 33010
//// pureDeletion: 7598
//// Timeout: 263
//
// System.out.println("TestAlarms: " + testAlarms);
// System.out.println("nullGumTreeResults: " + nullGumTreeResults);
// System.out.println("nullMappingGumTreeResults: " + nullMappingGumTreeResults);
// System.out.println("pureDeletion: " + pureDeletion);
// System.out.println("Timeout: " + timeout);
// System.out.println("noSourceCodeChagnes: " + noSourceCodeChagnes);
// System.out.println("largeHunk: " + largeHunk);
// System.out.println("nullSourceCode: " + nullSourceCode);
}
public static void statistics(String fileName, String type) throws IOException {
FileInputStream fis = new FileInputStream(fileName);
Scanner scanner = new Scanner(fis);
Map<String, Integer> violationTypesMap = new HashMap<>();
Map<String, Integer> projectsMap = new HashMap<>();
Map<String, Integer> perVperProjMap = new HashMap<>();
Map<String, List<String>> widespreadViolationsMap = new HashMap<>();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] elements = line.split(",");
String projectName = elements[0];
String violationType = elements[1];
int quantity = Integer.parseInt(elements[2]);
addToMap(projectsMap, projectName, quantity);
addToMap(violationTypesMap, violationType, quantity);
addToMap(perVperProjMap, projectName + "," + violationType, quantity);
if (widespreadViolationsMap.containsKey(violationType)) {
List<String> projectList = widespreadViolationsMap.get(violationType);
if (!projectList.contains(projectName)) {
projectList.add(projectName);
}
} else {
List<String> projectList = new ArrayList<>();
projectList.add(projectName);
widespreadViolationsMap.put(violationType, projectList);
}
}
scanner.close();
fis.close();
// Category
MapSorter<String, Integer> sorter = new MapSorter<String, Integer>();
violationTypesMap = sorter.sortByValueDescending(violationTypesMap);
projectsMap = sorter.sortByValueDescending(projectsMap);
Map<String, String> categories = new HashMap<>();
Map<String, List<String>> categoryVList = new HashMap<>();
String content = FileHelper.readFile("../FPM_Violations/RQ1/ViolationCategory.list");
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
while ((line = reader.readLine()) != null) {
String[] elements = line.split("@@");
categories.put(elements[1], elements[0]); // Violation type, category
}
reader.close();
// Sort Violation types by widespread.
Map<String, Integer> widespreadOfAllViolations = new HashMap<>();
for (Map.Entry<String, List<String>> entry : widespreadViolationsMap.entrySet()) {
widespreadOfAllViolations.put(entry.getKey(), entry.getValue().size());
}
widespreadOfAllViolations = sorter.sortByValueDescending(widespreadOfAllViolations);
StringBuilder wbuilder = new StringBuilder("Type,Identifier,Quantity,Category\n");
int identifier1 = 0;
for (Map.Entry<String, Integer> entry : widespreadOfAllViolations.entrySet()) {
identifier1 ++;
String violationType = entry.getKey();
String category = categories.get(violationType);
if (category == null || category.equals("null")) {
category = "Other";
}
wbuilder.append(violationType + "," + identifier1 + "," + entry.getValue() + "," + category + "\n");
if (categoryVList.containsKey(category)) {
categoryVList.get(category).add(violationType);
} else {
List<String> list = new ArrayList<>();
list.add(violationType);
categoryVList.put(category, list);
}
}
for (Map.Entry<String, List<String>> entry : categoryVList.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue().size());
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Widespread-per-" + type + "V-Type.csv", wbuilder, false);
// output statistics
List<String> sortedViolationTypes = new ArrayList<>();
Map<String, Integer> quantityOfCategory = new HashMap<>();
StringBuilder violationsBuilder = new StringBuilder("Type,Identifier,Quantity,Widespread,Category\n");
int identifier = 0;
for (Map.Entry<String, Integer> entry : violationTypesMap.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
identifier ++;
String category = categories.get(violationType);
if (category == null || category.equals("null")) {
category = "Other";
}
violationsBuilder.append(violationType + "," + identifier + "," + quantity + "," + widespreadViolationsMap.get(violationType).size()
+ "," + category + "\n");
if (quantityOfCategory.containsKey(category)) {
quantityOfCategory.put(category, quantityOfCategory.get(category) + quantity);
} else {
quantityOfCategory.put(category, quantity);
}
sortedViolationTypes.add(violationType);
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-" + type + "V-Type.csv", violationsBuilder, false);
StringBuilder pBuilder = new StringBuilder("Project,Quantity\n");
List<String> projectNames = new ArrayList<>();
for (Map.Entry<String, Integer> entry : projectsMap.entrySet()) {
String project = entry.getKey();
pBuilder.append(project + "," + entry.getValue() + "\n");
projectNames.add(project);
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-" + type + "Proj.csv", pBuilder, false);
StringBuilder categoryBuilder = new StringBuilder("Category,Quantity\n");
for (Map.Entry<String, Integer> entry : quantityOfCategory.entrySet()) {
categoryBuilder.append(entry.getKey() + "," + entry.getValue() + "\n");
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-" + type + "Category.csv", categoryBuilder, false);
StringBuilder builder = new StringBuilder("Projects");
String a = "";
String b = "";
for (int i = 0; i < sortedViolationTypes.size(); i ++) {
builder.append("," + sortedViolationTypes.get(i));
if (i < 50) {
a += "a$" + sortedViolationTypes.get(i) + ",";
b += "'" + (i + 1) + "',";
}
}
builder.append("\n");
System.out.println(a);
System.out.println(b);
// for (int i = 0; i < sortedViolationTypes.size(); i ++) {
// builder.append("," + i);
// }
// builder.append("\n");
for (int i = 0; i < projectNames.size(); i++) {
String projectName = projectNames.get(i);
builder.append(projectName);
for (int j = 0; j < sortedViolationTypes.size(); j ++) {
String violationType = sortedViolationTypes.get(j);
String key = projectName + "," + violationType;
Integer value = perVperProjMap.get(key);
if (value == null) {
value = 0;
}
builder.append("," + value);
}
builder.append("\n");
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Distribution-per-project-per-" + type + "type.csv", builder, false);
StringBuilder ssbuilder = new StringBuilder("Type, Identifier, Quantity, Category\n");
Map<String, Integer> perTypePerProj = new HashMap<>();
for (int j = 0; j < sortedViolationTypes.size(); j ++) {
String violationType = sortedViolationTypes.get(j);
List<Integer> projs = new ArrayList<>();
for (int i = 0; i < projectNames.size(); i++) {
String projectName = projectNames.get(i);
String key = projectName + "," + violationType;
Integer value = perVperProjMap.get(key);
if (value != null) {
String category = categories.get(violationType);
if (category == null || category.equals("null")) {
category = "Other";
}
ssbuilder.append(violationType + "," + (j + 1) + "," + value + "," + category + "\n");
projs.add(value);
}
}
ListSorter<Integer> sorter2 = new ListSorter<Integer>(projs);
projs = sorter2.sortAscending();
int index = projs.size() % 2 == 0 ? projs.size() / 2 - 1 : projs.size() / 2;
perTypePerProj.put(violationType, projs.get(index));
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Distribution-per-project-per-" + type + "type2.csv", ssbuilder, false);
StringBuilder ssbuilder2 = new StringBuilder("Type, Identifier, Quantity, Category\n");
perTypePerProj = sorter.sortByValueDescending(perTypePerProj);
int j = 0;
for (Map.Entry<String, Integer> entry : perTypePerProj.entrySet()) {
String violationType = entry.getKey();
// System.out.println(entry.getValue());
j ++;
for (int i = 0; i < projectNames.size(); i++) {
String projectName = projectNames.get(i);
String key = projectName + "," + violationType;
Integer value = perVperProjMap.get(key);
if (value != null) {
String category = categories.get(violationType);
if (category == null || category.equals("null")) {
category = "Other";
}
ssbuilder2.append(violationType + "," + j + "," + value + "," + category + "\n");
}
}
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Distribution-per-project-per-" + type + "type3.csv", ssbuilder2, false);
// StringBuilder pVpPBuilder = new StringBuilder();
// for (Map.Entry<String, Integer> entry : perVperProjMap.entrySet()) {
// pVpPBuilder.append(entry.getKey() + "," + entry.getValue() + "\n");
// }
// FileHelper.outputToFile("../FPM_Violations/RQ1/Per-project-per-" + type + "type.csv", pVpPBuilder, false);
}
private static void addToMap(Map<String, Integer> map, String key, int value) {
if (map.containsKey(key)) {
map.put(key, map.get(key) + value);
} else {
map.put(key, value);
}
}
public static void quantityOfEachViolationType() {
Map<String, Integer> violationQuantities = readTypeQuantityMap("../FPM_Violations/RQ1/distinct-per-vtype.csv");
Map<String, Integer> violationWidespread = readWidespread("../FPM_Violations/RQ1/distinct-per-project-vtype.csv");
StringBuilder buidler = new StringBuilder("Violation Type, Identifier, Quantity, Quantity of Projects, Ratio\n");
int identifier = 0;
double totality = 15961605d;
int sum = 0;
for (Map.Entry<String, Integer> entry : violationQuantities.entrySet()) {
String key = entry.getKey();
identifier ++;
int quantity = entry.getValue();
sum += quantity;
buidler.append(key + "," + identifier + "," + quantity + "," + violationWidespread.get(key) + "," + (sum / totality) + "\n");
// if (identifier >= 50) break;
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-V-type.csv", buidler, false);
}
public static void widespreadOfEachViolationType() {
Map<String, Integer> violationWidespread = readWidespread("../FPM_Violations/RQ1/distinct-per-project-vtype.csv");
System.out.println("Violation types: " + violationWidespread.size());
StringBuilder buidler = new StringBuilder("Violation Type, Identifier, Quantity of Projects\n");
int identifier = 0;
for (Map.Entry<String, Integer> entry : violationWidespread.entrySet()) {
identifier ++;
buidler.append(entry.getKey() + "," + identifier + "," + entry.getValue() + "\n");
// if (identifier >= 50) break;
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Widespread-per-V-type.csv", buidler, false);
}
public static void statisticWithCategories() throws IOException {
Map<String, String> categories = new HashMap<>();
String content = FileHelper.readFile("../FPM_Violations/RQ1/ViolationCategory.list");
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
while ((line = reader.readLine()) != null) {
String[] elements = line.split("@@");
categories.put(elements[1], elements[0]); // Violation type, category
}
reader.close();
Map<String, Integer> quantityOfCategory = new HashMap<>();
String content2 = FileHelper.readFile("../FPM_Violations/RQ1/distinct-per-vtype.csv");
reader = new BufferedReader(new StringReader(content2));
line = reader.readLine();
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
String violationType = elements[0];
int quantity = Integer.parseInt(elements[1]);
String category = categories.get(violationType);
if (quantityOfCategory.containsKey(category)) {
quantityOfCategory.put(category, quantityOfCategory.get(category) + quantity);
} else {
quantityOfCategory.put(category, quantity);
}
}
reader.close();
String categoryQuantity = "Category Type, Quantity\n";
for (Map.Entry<String, Integer> entry : quantityOfCategory.entrySet()) {
categoryQuantity += entry.getKey() + "," + entry.getValue() + "\n";
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-Category.csv", categoryQuantity, false);
}
public static void reloadData() {
// ordered projects by quantity of violations
Map<String, Integer> projectQuantities = readTypeQuantityMap("../FPM_Violations/RQ1/distinct-per-project.csv");
List<String> projectNames = new ArrayList<>();
for (Map.Entry<String, Integer> entry : projectQuantities.entrySet()) {
projectNames.add(entry.getKey());
}
// get ordered types by quantity of violations.
Map<String, Integer> violations = readTypeQuantityMap("../FPM_Violations/RQ1/distinct-per-vtype.csv");
List<String> violationTypes = new ArrayList<>();
for (Map.Entry<String, Integer> entry : violations.entrySet()) {
violationTypes.add(entry.getKey());
}
Map<String, String> perVperProjs = readData("../FPM_Violations/RQ1/distinct-per-project-vtype.csv");
StringBuilder builder = new StringBuilder("Projects");
for (int i = 0; i < violationTypes.size(); i ++) {
builder.append("," + violationTypes.get(i));
}
builder.append("\n");
for (int i = 0; i < projectNames.size(); i++) {
String projectName = projectNames.get(i);
builder.append(projectName);
for (int j = 0; j < violationTypes.size(); j ++) {
String violationType = violationTypes.get(j);
String key = projectName + "," + violationType;
String value = perVperProjs.get(key);
if (value == null) {
value = "0";
}
builder.append("," + value);
}
builder.append("\n");
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Distribution-per-project-per-type.csv", builder, false);
}
public static void statisticOfFixedViolations() throws IOException {
String fileName = "../FPM_Violations/RQ1/fixed-alarms-v1.0.list";
FileInputStream fis = new FileInputStream(fileName);
Scanner scanner = new Scanner(fis);
Map<String, Integer> violations = new HashMap<>();
Map<String, Integer> projects = new HashMap<>();
Map<String, Integer> perVperPro = new HashMap<>();
Map<String, List<String>> widespreadFixedV = new HashMap<>();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] elements = line.split(":");
String violationType = elements[0];
String projectName = elements[1];
if (violations.containsKey(violationType)) {
violations.put(violationType, violations.get(violationType) + 1);
} else {
violations.put(violationType, 1);
}
if (projects.containsKey(projectName)) {
projects.put(projectName, projects.get(projectName) + 1);
} else {
projects.put(projectName, 1);
}
String perVperProj = projectName + "," + violationType;
if (perVperPro.containsKey(perVperProj)) {
perVperPro.put(perVperProj, perVperPro.get(perVperProj) + 1);
} else {
perVperPro.put(perVperProj, 1);
}
if (widespreadFixedV.containsKey(violationType)) {
List<String> projectList = widespreadFixedV.get(violationType);
if (!projectList.contains(projectName)) {
projectList.add(projectName);
}
} else {
List<String> projectList = new ArrayList<>();
projectList.add(projectName);
widespreadFixedV.put(violationType, projectList);
}
}
scanner.close();
fis.close();
MapSorter<String, Integer> sorter = new MapSorter<String, Integer>();
violations = sorter.sortByValueDescending(violations);
projects = sorter.sortByValueDescending(projects);
Map<String, String> categories = new HashMap<>();
String content = FileHelper.readFile("../FPM_Violations/RQ1/ViolationCategory.list");
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
while ((line = reader.readLine()) != null) {
String[] elements = line.split("@@");
categories.put(elements[1], elements[0]); // Violation type, category
}
reader.close();
List<String> violationTypes = new ArrayList<>();
Map<String, Integer> quantityOfCategory = new HashMap<>();
StringBuilder violationsBuilder = new StringBuilder();
for (Map.Entry<String, Integer> entry : violations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
violationsBuilder.append(violationType + "," + quantity + "," + widespreadFixedV.get(violationType).size() + "\n");
String category = categories.get(violationType);
if (quantityOfCategory.containsKey(category)) {
quantityOfCategory.put(category, quantityOfCategory.get(category) + quantity);
} else {
quantityOfCategory.put(category, quantity);
}
violationTypes.add(violationType);
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-FixedV-Type.csv", violationsBuilder, false);
StringBuilder pBuilder = new StringBuilder();
List<String> projectNames = new ArrayList<>();
for (Map.Entry<String, Integer> entry : projects.entrySet()) {
String project = entry.getKey();
pBuilder.append(project + "," + entry.getValue() + "\n");
projectNames.add(project);
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-FixedV-Proj.csv", pBuilder, false);
StringBuilder categoryBuilder = new StringBuilder();
for (Map.Entry<String, Integer> entry : quantityOfCategory.entrySet()) {
categoryBuilder.append(entry.getKey() + "," + entry.getValue() + "\n");
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Quantity-per-Fixed-Category.csv", categoryBuilder, false);
StringBuilder builder = new StringBuilder("Projects");
for (int i = 0; i < violationTypes.size(); i ++) {
builder.append("," + violationTypes.get(i));
if (i < 500) {
}
}
builder.append("\n");
for (int i = 0; i < projectNames.size(); i++) {
String projectName = projectNames.get(i);
builder.append(projectName);
for (int j = 0; j < violationTypes.size(); j ++) {
String violationType = violationTypes.get(j);
String key = projectName + "," + violationType;
Integer value = perVperPro.get(key);
if (value == null) {
value = 0;
}
builder.append("," + value);
}
builder.append("\n");
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Distribution-per-project-per-Fixed-type.csv", builder, false);
StringBuilder pVpPBuilder = new StringBuilder();
for (Map.Entry<String, Integer> entry : perVperPro.entrySet()) {
pVpPBuilder.append(entry.getKey() + "," + entry.getValue() + "\n");
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Per-project-per-Fixed-type.csv", pVpPBuilder, false);
}
public static void fixedVSunfixed() throws IOException {
String fileName = "../FPM_Violations/RQ1/Quantity-per-V-type.csv"; // all violations
Map<String, Integer> allViolations = readTypeQuantityMap(fileName);
String file = "../FPM_Violations/RQ1/Quantity-per-FixedV-Type.csv"; // fixed violations
Map<String, Integer> fixedViolations = readTypeQuantityMap(file);
MapSorter<String, Integer> sorter = new MapSorter<>();
allViolations = sorter.sortByValueDescending(allViolations);
StringBuilder builder = new StringBuilder("Type,fixed,unfixed,all,fixed Ratio,unfixed Ratio\n");
for (Map.Entry<String, Integer> entry : allViolations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
Integer fixedQuantity = fixedViolations.get(violationType);
if (fixedQuantity == null) {
builder.append(violationType + "," + 0 + "," + quantity + "," + quantity + ",0.0,1\n");
} else {
builder.append(violationType + "," + fixedQuantity + "," + (quantity - fixedQuantity)
+ "," + quantity + "," + ((double)fixedQuantity) / ((double) quantity)
+ "," + ((double)(quantity - fixedQuantity)) / ((double) quantity) + "\n");
}
}
FileHelper.outputToFile("../FPM_Violations/RQ1/Distribution-per-Fixed-type-VS-per-unFixed-type.csv", builder, false);
}
private static Map<String, String> readData(String fileName) {
Map<String, String> perVperPros = new HashMap<>();
FileInputStream fis = null;
Scanner scanner = null;
try {
fis = new FileInputStream(fileName);
scanner = new Scanner(fis);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] elements = line.split(",");
String key = elements[0] + "," + elements[1];
String value = elements[2];
perVperPros.put(key, value);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
scanner.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return perVperPros;
}
private static Map<String, Integer> readTypeQuantityMap(String fileName) {
Map<String, Integer> map = new HashMap<>();
String fileContent = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(fileContent));
try {
String line= reader.readLine();
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
map.put(elements[0], Integer.valueOf(elements[1]));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
MapSorter<String, Integer> sorter = new MapSorter<>();
map = sorter.sortByValueDescending(map);
return map;
}
private static Map<String, Integer> readWidespread(String fileName) {
Map<String, Integer> violationWidespread = new HashMap<String, Integer>();
String fileContent = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(fileContent));
try {
String line = null;
while ((line = reader.readLine()) != null) {
String[] strArray = line.split(",");
String key = strArray[1];
if (violationWidespread.containsKey(key)) {
violationWidespread.put(key, violationWidespread.get(key) + 1);
} else {
violationWidespread.put(key, 1);
}
// String[] elements = line.split(",");
// violationWidespread.put(elements[0], Integer.valueOf(elements[1]));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
MapSorter<String, Integer> sorter = new MapSorter<>();
violationWidespread = sorter.sortByValueDescending(violationWidespread);
return violationWidespread;
}
}
@@ -0,0 +1,243 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import edu.lu.uni.serval.utils.FileHelper;
import edu.lu.uni.serval.utils.MapSorter;
public class TenFoldPossibilities {
public static void main(String[] args) throws IOException {
rankingInTenFolds("../FPM_Violations/RQ1/TenFolds/", "../FPM_Violations/RQ1/Quantity-per-V-type.csv", "TenFolds"); // ten folds of all projects.
rankingInTenFolds("../FPM_Violations/RQ1/FixedTenFolds-1/", "../FPM_Violations/RQ1/Quantity-per-FixedV-Type.csv", "FixedTenFolds-1");// all fixed violation types are contained.
}
public static void rankingInTenFolds(String tenFoldFiles, String typeFile, String outputPath) throws NumberFormatException, IOException {
List<File> files = FileHelper.getAllFilesInCurrentDiectory(tenFoldFiles, ".list");
Map<Integer, Map<String, Double>> tenFoldsOfAllViolationTypes = new HashMap<>();
Map<Integer, Map<String, Double>> tenFoldsOfAllFixedViolationTypes1 = new HashMap<>();
Map<Integer, Map<String, Double>> tenFoldsOfAllFixedViolationTypes2 = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllViolationTypes = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllFixedViolationTypes1 = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllFixedViolationTypes2 = new HashMap<>();
for (int i = 0; i < 10; i ++) {
List<String> projects = selectPorjects(files, i);
// the distribution of all violation types in these 9 sub-sets.
Map<String, Integer> violations = new HashMap<>();
int quantityOfAllViolations = readViolationsPerProject(violations, projects, "../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv");
// the distribution of all fixed violation types in these 9 sub-sets.
Map<String, Integer> fixedViolations = new HashMap<>();
int quantityOfAllFixedViolations = readViolationsPerProject(fixedViolations, projects, "../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv");
// Ratio of each violation type in all violations.
Map<String, Double> ratioOfEachViolationType = new HashMap<>(); // ratio of each violation type
Map<String, Double> ratioOfEachFixedViolationType1 = new HashMap<>(); // quantity of each fixed violation type / quantity of each violation type.
Map<String, Double> ratioOfEachFixedViolationType2 = new HashMap<>(); // quantity of each fixed violation type / quantityOfAllFixedViolations
for (Map.Entry<String, Integer> entry : violations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
double ratio = (double) quantity / quantityOfAllViolations;
ratioOfEachViolationType.put(violationType, ratio);
if (fixedViolations.containsKey(violationType)) {
int quantity1 = fixedViolations.get(violationType);
double ratio1 = (double)quantity1 / quantity;
double ratio2 = (double)quantity1 / quantityOfAllFixedViolations;
ratioOfEachFixedViolationType1.put(violationType, ratio1);
ratioOfEachFixedViolationType2.put(violationType, ratio2);
} else {
ratioOfEachFixedViolationType1.put(violationType, 0d);
}
}
tenFoldsOfAllViolationTypes.put(i, ratioOfEachViolationType);
tenFoldsOfAllFixedViolationTypes1.put(i, ratioOfEachFixedViolationType1);
tenFoldsOfAllFixedViolationTypes2.put(i, ratioOfEachFixedViolationType2);
// Testing Data
List<String> testingProjects = readList(files.get(i));
Map<String, Integer> testingViolations = new HashMap<>();
int testingQuantitifOfAllViolations = readViolationsPerProject(testingViolations, testingProjects, "../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv");
Map<String, Integer> testingFixedViolations = new HashMap<>();
int testingQuantityOfAllFixedViolations = readViolationsPerProject(testingFixedViolations, testingProjects, "../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv");
Map<String, Double> testingRatioOfEachViolationType = new HashMap<>();
Map<String, Double> testingRatioOfEachFixedViolationType1 = new HashMap<>();
Map<String, Double> testingRatioOfEachFixedViolationType2 = new HashMap<>();
for (Map.Entry<String, Integer> entry : testingViolations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
double ratio = (double) quantity / testingQuantitifOfAllViolations;
testingRatioOfEachViolationType.put(violationType, ratio);
if (testingFixedViolations.containsKey(violationType)) {
int quantity1 = testingFixedViolations.get(violationType);
testingRatioOfEachFixedViolationType1.put(violationType, (double)quantity1 / quantity);
testingRatioOfEachFixedViolationType2.put(violationType, (double)quantity1 / testingQuantityOfAllFixedViolations);
} else {
testingRatioOfEachFixedViolationType1.put(violationType, 0d);
}
}
testingTenFoldsOfAllViolationTypes.put(i, testingRatioOfEachViolationType);
testingTenFoldsOfAllFixedViolationTypes1.put(i, testingRatioOfEachFixedViolationType1);
testingTenFoldsOfAllFixedViolationTypes2.put(i, testingRatioOfEachFixedViolationType2);
}
List<String> violationTypes = readTypes(typeFile);
outputTenFolds(tenFoldsOfAllViolationTypes, testingTenFoldsOfAllViolationTypes, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-violation-type.csv");
outputTenFolds(tenFoldsOfAllFixedViolationTypes1, testingTenFoldsOfAllFixedViolationTypes1, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-fixed-violation-type1.csv");
outputTenFolds(tenFoldsOfAllFixedViolationTypes2, testingTenFoldsOfAllFixedViolationTypes2, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-fixed-violation-type2.csv");
}
private static List<String> readTypes(String fileName) throws IOException {
List<String> violationTypes = new ArrayList<>();
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = reader.readLine();
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
violationTypes.add(elements[0]);
}
reader.close();
return violationTypes;
}
private static void outputTenFolds(Map<Integer, Map<String, Double>> ratiosMap, Map<Integer, Map<String, Double>> testingMap, List<String> violationTypes, String fileName) {
StringBuilder builder = new StringBuilder("Violatype, 0, 0-R, 0-T, 0-T-R, 1, 1-R, 1-T, 1-T-R, 2, 2-R, 2-T, 2-T-R, 3, 3-R, 3-T, 3-T-R, 4, 4-R, 4-T, 4-T-R, 5, 5-R, 5-T, 5-T-R, 6, 6-R, 6-T, 6-T-R, 7, 7-R, 7-T, 7-T-R, 8, 8-R, 8-T, 8-T-R, 9, 9-R, 9-T, 9-T-R\n");
Map<Integer, Map<String, Integer>> ratiosRankingMap = new HashMap<>();
Map<Integer, Map<String, Integer>> testingDataRankingMap = new HashMap<>();
for (String type : violationTypes) {
builder.append(type);
for (int i = 0; i < 10; i ++) {
Map<String, Double> ratios = ratiosMap.get(i);
Map<String, Double> testingData = testingMap.get(i);
Map<String, Integer> ratiosRanking;
Map<String, Integer> testingDataRanking;
if (!ratiosRankingMap.containsKey(i)) {
ratiosRanking = rankAlarmTypes(ratios);
testingDataRanking = rankAlarmTypes(testingData);
} else {
ratiosRanking = ratiosRankingMap.get(i);
testingDataRanking = testingDataRankingMap.get(i);
}
if (ratios.containsKey(type)) {
builder.append(", " + ratios.get(type));//.toString().replace(".", ",")
} else {
builder.append(", 0.0");
}
if (ratiosRanking.containsKey(type)) {
builder.append(", " + ratiosRanking.get(type));
} else {
builder.append(", " + (ratiosRanking.size() + 1));
}
if (testingData.containsKey(type)) {
builder.append(", " + testingData.get(type));
} else {
builder.append(", 0.0");
}
if (testingDataRanking.containsKey(type)) {
builder.append(", " + testingDataRanking.get(type));
} else {
builder.append(", " + (testingDataRanking.size() + 1));
}
}
builder.append("\n");
}
FileHelper.outputToFile(fileName, builder, false);
}
private static Map<String, Integer> rankAlarmTypes(Map<String, Double> possibilityMap) {
MapSorter<String, Double> sorter = new MapSorter<>();
possibilityMap = sorter.sortByValueDescending(possibilityMap);
Map<String, Integer> ranking = new HashMap<>();
int ranker = 0;
double possibility = 0;
for (Map.Entry<String, Double> entry : possibilityMap.entrySet()) {
String alarmType = entry.getKey();
double value = entry.getValue();
if (possibility != value) {
ranker = ranking.size() + 1;
}
ranking.put(alarmType, ranker);
}
return ranking;
}
private static int readViolationsPerProject(Map<String, Integer> violations, List<String> projects, String fileName) throws NumberFormatException, IOException {
int quantityOfAllViolations = 0;
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
String projectName = elements[0];
if (projects.contains(projectName)) {
String alarmType = elements[1];
int quantity = Integer.parseInt(elements[2]);
quantityOfAllViolations += quantity;
if (violations.containsKey(alarmType)) {
violations.put(alarmType, violations.get(alarmType) + quantity);
} else {
violations.put(alarmType, quantity);
}
}
}
reader.close();
return quantityOfAllViolations;
}
private static List<String> selectPorjects(List<File> files, int i) {
List<String> projects = new ArrayList<>();
for (File file : files) {
if (file.getName().equals("Fold_" + i + ".list")) {
continue;
}
projects.addAll(readList(file));
}
return projects;
}
private static List<String> readList(File file) {
List<String> projects = new ArrayList<>();
String content = FileHelper.readFile(file);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
try {
while ((line = reader.readLine()) != null) {
projects.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return projects;
}
}
@@ -0,0 +1,256 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import edu.lu.uni.serval.utils.FileHelper;
import edu.lu.uni.serval.utils.MapSorter;
/**
* Fixed violation types are selected by their widespread.
*
* @author kui.liu
*
*/
public class TenFoldPossibilities2 {
public static void main(String[] args) throws IOException {
rankingInTenFolds("../FPM_Violations/RQ1/FixedTenFolds-W/", "../FPM_Violations/RQ1/Widespread-per-FixedV-Type.csv", "FixedTenFolds-W");
}
public static void rankingInTenFolds(String tenFoldFiles, String typeFile, String outputPath) throws NumberFormatException, IOException {
int topNumber = 10;
List<String> violationTypes = readTypes(typeFile, topNumber);
List<File> files = FileHelper.getAllFilesInCurrentDiectory(tenFoldFiles, ".list");
Map<Integer, Map<String, Double>> tenFoldsOfAllViolationTypes = new HashMap<>();
Map<Integer, Map<String, Double>> tenFoldsOfAllFixedViolationTypes1 = new HashMap<>();
Map<Integer, Map<String, Double>> tenFoldsOfAllFixedViolationTypes2 = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllViolationTypes = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllFixedViolationTypes1 = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllFixedViolationTypes2 = new HashMap<>();
for (int i = 0; i < 10; i ++) {
List<String> projects = selectPorjects(files, i);
// all violations in these 9 sub-sets.
Map<String, Integer> violations = new HashMap<>();
int quantityOfAllViolations = readViolationsPerProject(violationTypes, violations, projects, "../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv");
Map<String, Integer> fixedViolations = new HashMap<>();
int quantityOfAllFixedViolations = readViolationsPerProject(violationTypes, fixedViolations, projects, "../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv");
// Ratio of each violation type in all violations.
Map<String, Double> ratioOfEachViolationType = new HashMap<>(); // ratio of each violation type
Map<String, Double> ratioOfEachFixedViolationType1 = new HashMap<>(); // quantity of each fixed violation type / quantity of each violation type.
Map<String, Double> ratioOfEachFixedViolationType2 = new HashMap<>(); // quantity of each fixed violation type / quantityOfAllFixedViolations
for (Map.Entry<String, Integer> entry : violations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
double ratio = (double) quantity / quantityOfAllViolations;
ratioOfEachViolationType.put(violationType, ratio);
if (fixedViolations.containsKey(violationType)) {
int quantity1 = fixedViolations.get(violationType);
double ratio1 = (double)quantity1 / quantity;
double ratio2 = (double)quantity1 / quantityOfAllFixedViolations;
ratioOfEachFixedViolationType1.put(violationType, ratio1);
ratioOfEachFixedViolationType2.put(violationType, ratio2);
} else {
ratioOfEachFixedViolationType1.put(violationType, 0d);
}
}
tenFoldsOfAllViolationTypes.put(i, ratioOfEachViolationType);
tenFoldsOfAllFixedViolationTypes1.put(i, ratioOfEachFixedViolationType1);
tenFoldsOfAllFixedViolationTypes2.put(i, ratioOfEachFixedViolationType2);
// Testing Data
List<String> testingProjects = readList(files.get(i));
Map<String, Integer> testingViolations = new HashMap<>();
int testingQuantitifOfAllViolations = readViolationsPerProject(violationTypes, testingViolations, testingProjects, "../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv");
Map<String, Integer> testingFixedViolations = new HashMap<>();
int testingQuantityOfAllFixedViolations = readViolationsPerProject(violationTypes, testingFixedViolations, testingProjects, "../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv");
Map<String, Double> testingRatioOfEachViolationType = new HashMap<>();
Map<String, Double> testingRatioOfEachFixedViolationType1 = new HashMap<>();
Map<String, Double> testingRatioOfEachFixedViolationType2 = new HashMap<>();
for (Map.Entry<String, Integer> entry : testingViolations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
double ratio = (double) quantity / testingQuantitifOfAllViolations;
testingRatioOfEachViolationType.put(violationType, ratio);
if (testingFixedViolations.containsKey(violationType)) {
int quantity1 = testingFixedViolations.get(violationType);
testingRatioOfEachFixedViolationType1.put(violationType, (double)quantity1 / quantity);
testingRatioOfEachFixedViolationType2.put(violationType, (double)quantity1 / testingQuantityOfAllFixedViolations);
} else {
testingRatioOfEachFixedViolationType1.put(violationType, 0d);
}
}
testingTenFoldsOfAllViolationTypes.put(i, testingRatioOfEachViolationType);
testingTenFoldsOfAllFixedViolationTypes1.put(i, testingRatioOfEachFixedViolationType1);
testingTenFoldsOfAllFixedViolationTypes2.put(i, testingRatioOfEachFixedViolationType2);
}
outputTenFolds(tenFoldsOfAllViolationTypes, testingTenFoldsOfAllViolationTypes, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-violation-type-" + topNumber + ".csv");
outputTenFolds(tenFoldsOfAllFixedViolationTypes1, testingTenFoldsOfAllFixedViolationTypes1, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-fixed-violation-type1-" + topNumber + ".csv");
outputTenFolds(tenFoldsOfAllFixedViolationTypes2, testingTenFoldsOfAllFixedViolationTypes2, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-fixed-violation-type2-" + topNumber + ".csv");
}
private static List<String> readTypes(String fileName, int number) throws IOException {
List<String> violationTypes = new ArrayList<>();
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = reader.readLine();
int counter = 0;
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
violationTypes.add(elements[0]);
if (++counter == number) break;
}
reader.close();
return violationTypes;
}
private static void outputTenFolds(Map<Integer, Map<String, Double>> ratiosMap, Map<Integer, Map<String, Double>> testingMap, List<String> violationTypes, String fileName) {
StringBuilder builder = new StringBuilder("Violatype, 0, 0-R, 0-T, 0-T-R, 1, 1-R, 1-T, 1-T-R, 2, 2-R, 2-T, 2-T-R, 3, 3-R, 3-T, 3-T-R, 4, 4-R, 4-T, 4-T-R, 5, 5-R, 5-T, 5-T-R, 6, 6-R, 6-T, 6-T-R, 7, 7-R, 7-T, 7-T-R, 8, 8-R, 8-T, 8-T-R, 9, 9-R, 9-T, 9-T-R\n");
Map<Integer, Map<String, Integer>> ratiosRankingMap = new HashMap<>();
Map<Integer, Map<String, Integer>> testingDataRankingMap = new HashMap<>();
for (String type : violationTypes) {
builder.append(type);
for (int i = 0; i < 10; i ++) {
Map<String, Double> ratios = ratiosMap.get(i);
Map<String, Double> testingData = testingMap.get(i);
Map<String, Integer> ratiosRanking;
Map<String, Integer> testingDataRanking;
if (!ratiosRankingMap.containsKey(i)) {
ratiosRanking = rankAlarmTypes(ratios);
testingDataRanking = rankAlarmTypes(testingData);
} else {
ratiosRanking = ratiosRankingMap.get(i);
testingDataRanking = testingDataRankingMap.get(i);
}
if (ratios.containsKey(type)) {
builder.append(", " + ratios.get(type));//.toString().replace(".", ",")
} else {
builder.append(", 0.0");
}
if (ratiosRanking.containsKey(type)) {
builder.append(", " + ratiosRanking.get(type));
} else {
builder.append(", " + (ratiosRanking.size() + 1));
}
if (testingData.containsKey(type)) {
builder.append(", " + testingData.get(type));
} else {
builder.append(", 0.0");
}
if (testingDataRanking.containsKey(type)) {
builder.append(", " + testingDataRanking.get(type));
} else {
builder.append(", " + (testingDataRanking.size() + 1));
}
}
builder.append("\n");
}
FileHelper.outputToFile(fileName, builder, false);
}
private static Map<String, Integer> rankAlarmTypes(Map<String, Double> possibilityMap) {
MapSorter<String, Double> sorter = new MapSorter<>();
possibilityMap = sorter.sortByValueDescending(possibilityMap);
Map<String, Integer> ranking = new HashMap<>();
int ranker = 0;
double possibility = 0;
for (Map.Entry<String, Double> entry : possibilityMap.entrySet()) {
String alarmType = entry.getKey();
double value = entry.getValue();
if (possibility != value) {
ranker = ranking.size() + 1;
}
ranking.put(alarmType, ranker);
}
return ranking;
}
private static int readViolationsPerProject(List<String> violationTypes, Map<String, Integer> violations, List<String> projects, String fileName) throws NumberFormatException, IOException {
int quantityOfAllViolations = 0;
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
String projectName = elements[0];
if (projects.contains(projectName)) {
String alarmType = elements[1];
if (violationTypes.contains(alarmType)) {
int quantity = Integer.parseInt(elements[2]);
quantityOfAllViolations += quantity;
if (violations.containsKey(alarmType)) {
violations.put(alarmType, violations.get(alarmType) + quantity);
} else {
violations.put(alarmType, quantity);
}
}
}
}
reader.close();
return quantityOfAllViolations;
}
private static List<String> selectPorjects(List<File> files, int i) {
List<String> projects = new ArrayList<>();
for (File file : files) {
if (file.getName().equals("Fold_" + i + ".list")) {
continue;
}
projects.addAll(readList(file));
}
return projects;
}
private static List<String> readList(File file) {
List<String> projects = new ArrayList<>();
String content = FileHelper.readFile(file);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
try {
while ((line = reader.readLine()) != null) {
projects.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return projects;
}
}
@@ -0,0 +1,256 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import edu.lu.uni.serval.utils.FileHelper;
import edu.lu.uni.serval.utils.MapSorter;
/**
* Fixed violation types are selected by their quantities.
*
* @author kui.liu
*
*/
public class TenFoldPossibilities3 {
public static void main(String[] args) throws IOException {
rankingInTenFolds("../FPM_Violations/RQ1/TenFolds/", "../FPM_Violations/RQ1/Quantity-per-V-type.csv", "TenFolds-Q"); // ten folds of all projects.
// rankingInTenFolds("../FPM_Violations/RQ1/FixedTenFolds-Q/", "../FPM_Violations/RQ1/Quantity-per-FixedV-Type.csv", "FixedTenFolds-Q");
}
public static void rankingInTenFolds(String tenFoldFiles, String typeFile, String outputPath) throws NumberFormatException, IOException {
int topNumber = 70;
List<String> violationTypes = readTypes(typeFile, topNumber);
List<File> files = FileHelper.getAllFilesInCurrentDiectory(tenFoldFiles, ".list");
Map<Integer, Map<String, Double>> tenFoldsOfAllViolationTypes = new HashMap<>();
Map<Integer, Map<String, Double>> tenFoldsOfAllFixedViolationTypes1 = new HashMap<>();
Map<Integer, Map<String, Double>> tenFoldsOfAllFixedViolationTypes2 = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllViolationTypes = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllFixedViolationTypes1 = new HashMap<>();
Map<Integer, Map<String, Double>> testingTenFoldsOfAllFixedViolationTypes2 = new HashMap<>();
for (int i = 0; i < 10; i ++) {
List<String> projects = selectPorjects(files, i);
// all violations in these 9 sub-sets.
Map<String, Integer> violations = new HashMap<>();
int quantityOfAllViolations = readViolationsPerProject(violationTypes, violations, projects, "../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv");
Map<String, Integer> fixedViolations = new HashMap<>();
int quantityOfAllFixedViolations = readViolationsPerProject(violationTypes, fixedViolations, projects, "../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv");
// Ratio of each violation type in all violations.
Map<String, Double> ratioOfEachViolationType = new HashMap<>(); // ratio of each violation type
Map<String, Double> ratioOfEachFixedViolationType1 = new HashMap<>(); // quantity of each fixed violation type / quantity of each violation type.
Map<String, Double> ratioOfEachFixedViolationType2 = new HashMap<>(); // quantity of each fixed violation type / quantityOfAllFixedViolations
for (Map.Entry<String, Integer> entry : violations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
double ratio = (double) quantity / quantityOfAllViolations;
ratioOfEachViolationType.put(violationType, ratio);
if (fixedViolations.containsKey(violationType)) {
int quantity1 = fixedViolations.get(violationType);
double ratio1 = (double)quantity1 / quantity;
double ratio2 = (double)quantity1 / quantityOfAllFixedViolations;
ratioOfEachFixedViolationType1.put(violationType, ratio1);
ratioOfEachFixedViolationType2.put(violationType, ratio2);
} else {
ratioOfEachFixedViolationType1.put(violationType, 0d);
}
}
tenFoldsOfAllViolationTypes.put(i, ratioOfEachViolationType);
tenFoldsOfAllFixedViolationTypes1.put(i, ratioOfEachFixedViolationType1);
tenFoldsOfAllFixedViolationTypes2.put(i, ratioOfEachFixedViolationType2);
// Testing Data
List<String> testingProjects = readList(files.get(i));
Map<String, Integer> testingViolations = new HashMap<>();
int testingQuantitifOfAllViolations = readViolationsPerProject(violationTypes, testingViolations, testingProjects, "../FPM_Violations/RQ1/all-leafnodes-per-project-vtype.csv");
Map<String, Integer> testingFixedViolations = new HashMap<>();
int testingQuantityOfAllFixedViolations = readViolationsPerProject(violationTypes, testingFixedViolations, testingProjects, "../FPM_Violations/RQ1/distinct-fixed-summary-per-project-vtype.csv");
Map<String, Double> testingRatioOfEachViolationType = new HashMap<>();
Map<String, Double> testingRatioOfEachFixedViolationType1 = new HashMap<>();
Map<String, Double> testingRatioOfEachFixedViolationType2 = new HashMap<>();
for (Map.Entry<String, Integer> entry : testingViolations.entrySet()) {
String violationType = entry.getKey();
int quantity = entry.getValue();
double ratio = (double) quantity / testingQuantitifOfAllViolations;
testingRatioOfEachViolationType.put(violationType, ratio);
if (testingFixedViolations.containsKey(violationType)) {
int quantity1 = testingFixedViolations.get(violationType);
testingRatioOfEachFixedViolationType1.put(violationType, (double)quantity1 / quantity);
testingRatioOfEachFixedViolationType2.put(violationType, (double)quantity1 / testingQuantityOfAllFixedViolations);
} else {
testingRatioOfEachFixedViolationType1.put(violationType, 0d);
}
}
testingTenFoldsOfAllViolationTypes.put(i, testingRatioOfEachViolationType);
testingTenFoldsOfAllFixedViolationTypes1.put(i, testingRatioOfEachFixedViolationType1);
testingTenFoldsOfAllFixedViolationTypes2.put(i, testingRatioOfEachFixedViolationType2);
}
outputTenFolds(tenFoldsOfAllViolationTypes, testingTenFoldsOfAllViolationTypes, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-violation-type" + topNumber + ".csv");
outputTenFolds(tenFoldsOfAllFixedViolationTypes1, testingTenFoldsOfAllFixedViolationTypes1, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-fixed-violation-type1-" + topNumber + ".csv");
outputTenFolds(tenFoldsOfAllFixedViolationTypes2, testingTenFoldsOfAllFixedViolationTypes2, violationTypes, "../FPM_Violations/RQ1/" + outputPath + "/Ten-fold-all-fixed-violation-type2-" + topNumber + ".csv");
}
private static List<String> readTypes(String fileName, int number) throws IOException {
List<String> violationTypes = new ArrayList<>();
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = reader.readLine();
int counter = 0;
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
violationTypes.add(elements[0]);
if(++ counter == number) break;
}
reader.close();
return violationTypes;
}
private static void outputTenFolds(Map<Integer, Map<String, Double>> ratiosMap, Map<Integer, Map<String, Double>> testingMap, List<String> violationTypes, String fileName) {
StringBuilder builder = new StringBuilder("Violatype, 0, 0-R, 0-T, 0-T-R, 1, 1-R, 1-T, 1-T-R, 2, 2-R, 2-T, 2-T-R, 3, 3-R, 3-T, 3-T-R, 4, 4-R, 4-T, 4-T-R, 5, 5-R, 5-T, 5-T-R, 6, 6-R, 6-T, 6-T-R, 7, 7-R, 7-T, 7-T-R, 8, 8-R, 8-T, 8-T-R, 9, 9-R, 9-T, 9-T-R\n");
Map<Integer, Map<String, Integer>> ratiosRankingMap = new HashMap<>();
Map<Integer, Map<String, Integer>> testingDataRankingMap = new HashMap<>();
for (String type : violationTypes) {
builder.append(type);
for (int i = 0; i < 10; i ++) {
Map<String, Double> ratios = ratiosMap.get(i);
Map<String, Double> testingData = testingMap.get(i);
Map<String, Integer> ratiosRanking;
Map<String, Integer> testingDataRanking;
if (!ratiosRankingMap.containsKey(i)) {
ratiosRanking = rankAlarmTypes(ratios);
testingDataRanking = rankAlarmTypes(testingData);
} else {
ratiosRanking = ratiosRankingMap.get(i);
testingDataRanking = testingDataRankingMap.get(i);
}
if (ratios.containsKey(type)) {
builder.append(", " + ratios.get(type));//.toString().replace(".", ",")
} else {
builder.append(", 0.0");
}
if (ratiosRanking.containsKey(type)) {
builder.append(", " + ratiosRanking.get(type));
} else {
builder.append(", " + (ratiosRanking.size() + 1));
}
if (testingData.containsKey(type)) {
builder.append(", " + testingData.get(type));
} else {
builder.append(", 0.0");
}
if (testingDataRanking.containsKey(type)) {
builder.append(", " + testingDataRanking.get(type));
} else {
builder.append(", " + (testingDataRanking.size() + 1));
}
}
builder.append("\n");
}
FileHelper.outputToFile(fileName, builder, false);
}
private static Map<String, Integer> rankAlarmTypes(Map<String, Double> possibilityMap) {
MapSorter<String, Double> sorter = new MapSorter<>();
possibilityMap = sorter.sortByValueDescending(possibilityMap);
Map<String, Integer> ranking = new HashMap<>();
int ranker = 0;
double possibility = 0;
for (Map.Entry<String, Double> entry : possibilityMap.entrySet()) {
String alarmType = entry.getKey();
double value = entry.getValue();
if (possibility != value) {
ranker = ranking.size() + 1;
}
ranking.put(alarmType, ranker);
}
return ranking;
}
private static int readViolationsPerProject(List<String> violationTypes, Map<String, Integer> violations, List<String> projects, String fileName) throws NumberFormatException, IOException {
int quantityOfAllViolations = 0;
String content = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
String projectName = elements[0];
if (projects.contains(projectName)) {
String alarmType = elements[1];
if (violationTypes.contains(alarmType)) {
int quantity = Integer.parseInt(elements[2]);
quantityOfAllViolations += quantity;
if (violations.containsKey(alarmType)) {
violations.put(alarmType, violations.get(alarmType) + quantity);
} else {
violations.put(alarmType, quantity);
}
}
}
}
reader.close();
return quantityOfAllViolations;
}
private static List<String> selectPorjects(List<File> files, int i) {
List<String> projects = new ArrayList<>();
for (File file : files) {
if (file.getName().equals("Fold_" + i + ".list")) {
continue;
}
projects.addAll(readList(file));
}
return projects;
}
private static List<String> readList(File file) {
List<String> projects = new ArrayList<>();
String content = FileHelper.readFile(file);
BufferedReader reader = new BufferedReader(new StringReader(content));
String line = null;
try {
while ((line = reader.readLine()) != null) {
projects.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return projects;
}
}
@@ -0,0 +1,121 @@
package edu.lu.uni.serval.statistics;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import edu.lu.uni.serval.utils.FileHelper;
public class TenFoldProjs {
public static void main(String[] args) {
List<String> allProjects = readList("../FPM_Violations/RQ1/Quantity-per-Proj.csv");
randomSeparateProjects(allProjects, "../FPM_Violations/RQ1/TenFolds/");
List<String> allFixedProjects = readList("../FPM_Violations/RQ1/Quantity-per-FixedProj.csv");
randomSeparateProjects(allFixedProjects, "../FPM_Violations/RQ1/FixedTenFolds-1/");
List<String> selectedProjects = selectFixedProjects("../FPM_Violations/RQ1/Quantity-per-FixedProj.csv");
randomSeparateProjects(selectedProjects, "../FPM_Violations/RQ1/FixedTenFolds-2/");
}
private static void randomSeparateProjects(List<String> projectNames, String outputPath) {
List<Integer> selectedIndexes = new ArrayList<>();
int number = projectNames.size();
int number2 = (int) Math.round((double) number / 10);
Map<Integer, List<String>> map = new HashMap<>();
for (int i = 0; i < 9; i ++) {
int counter = 0;
List<String> value = new ArrayList<>();
while (counter < number2) {
Random random = new Random();
int index = random.nextInt(number);
if (!selectedIndexes.contains(index)) {
counter ++;
value.add(projectNames.get(index));
selectedIndexes.add(index);
if (selectedIndexes.size() == number) break;
}
}
map.put(i, value);
}
List<String> value = new ArrayList<>();
for (int i = 0; i < number; i ++) {
if (!selectedIndexes.contains(i)) {
value.add(projectNames.get(i));
}
}
map.put(9, value);
for (Map.Entry<Integer, List<String>> entry : map.entrySet()) {
int key = entry.getKey();
List<String> projects = entry.getValue();
System.out.println(projects.size());
String pojectsStr = "";
for (String project : projects) {
pojectsStr += project + "\n";
}
FileHelper.outputToFile(outputPath + "Fold_" + key + ".list", pojectsStr, false);
}
}
private static List<String> selectFixedProjects(String fileName) {
List<String> list = new ArrayList<>();
String fileContent = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(fileContent));
String line= null;
try {
line = reader.readLine();
while ((line = reader.readLine()) != null) {
String[] elements = line.split(",");
list.add(elements[0]);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
private static List<String> readList(String fileName) {
List<String> list = new ArrayList<>();
String fileContent = FileHelper.readFile(fileName);
BufferedReader reader = new BufferedReader(new StringReader(fileContent));
String line= null;
try {
line = reader.readLine();
while ((line = reader.readLine()) != null) {
list.add(line.split(",")[0]);;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
}