Skip to content

Commit a5a1b81

Browse files
committed
RUL-96: Conditions printed in the order they had been added to the rule.
1 parent 12fc1a7 commit a5a1b81

11 files changed

+62
-36
lines changed

adaa.analytics.rules/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id 'java'
66
}
77

8-
version = '2.1.17'
8+
version = '2.1.18'
99
java {
1010
sourceCompatibility = JavaVersion.VERSION_1_8
1111
}

adaa.analytics.rules/src/main/java/adaa/analytics/rules/logic/representation/condition/CompoundCondition.java

+33-3
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,9 @@ protected void internalEvaluate(IExampleSet set, Set<Integer> outIndices) {
108108
*/
109109
public String toString() {
110110
String s = "";
111-
String op = operator == LogicalOperator.ALTERNATIVE ? " OR " : " AND ";
112-
111+
String op = operator == LogicalOperator.ALTERNATIVE ? " OR " : " AND ";
112+
113+
/*
113114
Map<String, ElementaryCondition> shortened = new HashMap<String, ElementaryCondition>();
114115
Set<ConditionBase> unshortened = new LinkedHashSet<>();
115116
@@ -137,8 +138,37 @@ public String toString() {
137138
// add shortened conditions
138139
for (ConditionBase cnd : shortened.values()) {
139140
s += cnd.toString() + op;
141+
}*/
142+
143+
List<ConditionBase> outConditions = new ArrayList<>();
144+
Map<String, Integer> attr2position = new HashMap<>();
145+
146+
for (ConditionBase cnd : subconditions) {
147+
if (cnd instanceof ElementaryCondition && cnd.isPrunable()) {
148+
ElementaryCondition ec = (ElementaryCondition)cnd;
149+
String attr = ec.getAttribute();
150+
151+
if (attr2position.containsKey(attr)) {
152+
// if condition built upon current attribute exists - replace with intersection
153+
int pos = attr2position.get(attr);
154+
ElementaryCondition parent = (ElementaryCondition) outConditions.get(pos);
155+
outConditions.set(pos, parent.intersect(ec));
156+
} else {
157+
// otherwise - add condition and save positon of the attribute
158+
attr2position.put(attr, outConditions.size());
159+
outConditions.add(ec);
160+
}
161+
} else {
162+
// if not elementary condition - add it as it is
163+
outConditions.add(cnd);
164+
}
140165
}
141-
166+
167+
for (ConditionBase cnd : outConditions) {
168+
s += cnd.toString() + op;
169+
}
170+
171+
142172
s = s.substring(0, Math.max(0, s.length() - op.length()));
143173

144174
if (type == Type.FORCED) {

adaa.analytics.rules/test/resources/reports/ClassificationExpertSnCTest/test_seismic-bumps.guided-c2, gimpuls_750 extended.seismic-bumps-train-minimal.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
Rules
44
IF [gimpuls = (-inf, 1350.50)] THEN class = {0}
5-
IF goenergy = <-32.50, inf) AND gimpuls = (-inf, 2784) AND goimpuls = <-39, 111) AND nbumps = (-inf, 5.50) THEN class = {0}
6-
IF [gimpuls = <408.50, inf)] AND ghazard = {a} AND goenergy = (-inf, 94.50) AND maxenergy = (-inf, 6500) AND genergy = <35165, 294530) AND senergy = (-inf, 8750) AND nbumps3 = (-inf, 2.50) THEN class = {1}
5+
IF gimpuls = (-inf, 2784) AND nbumps = (-inf, 5.50) AND goimpuls = <-39, 111) AND goenergy = <-32.50, inf) THEN class = {0}
6+
IF [gimpuls = <408.50, inf)] AND genergy = <35165, 294530) AND goenergy = (-inf, 94.50) AND ghazard = {a} AND senergy = (-inf, 8750) AND nbumps3 = (-inf, 2.50) AND maxenergy = (-inf, 6500) THEN class = {1}

adaa.analytics.rules/test/resources/reports/ClassificationSnCTest/test_deals.mincov=8, no_pruning.deals-train.txt

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ Rules
1111
IF Gender = {female} AND Age = <27.50, inf) THEN Future Customer = {no}
1212
IF Gender = {female} AND Age = <24.50, inf) THEN Future Customer = {no}
1313
IF Gender = {female} AND Age = <19.50, inf) THEN Future Customer = {no}
14-
IF Gender = {female} THEN Future Customer = {no}
1514
IF Payment Method = {credit card} AND Age = (-inf, 30.50) THEN Future Customer = {yes}
1615
IF Gender = {male} AND Payment Method = {credit card} AND Age = (-inf, 32.50) THEN Future Customer = {yes}
1716
IF Gender = {male} AND Age = <18.50, 21.50) THEN Future Customer = {yes}

adaa.analytics.rules/test/resources/reports/ClassificationSnCTest/test_deals.mincov=8.deals-train.txt

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ Rules
77
IF Gender = {female} AND Age = <28.50, inf) THEN Future Customer = {no}
88
IF Gender = {female} AND Age = <23.50, inf) THEN Future Customer = {no}
99
IF Gender = {female} AND Age = <17.50, inf) THEN Future Customer = {no}
10-
IF Gender = {female} THEN Future Customer = {no}
1110
IF Payment Method = {credit card} AND Age = (-inf, 32.50) THEN Future Customer = {yes}
1211
IF Age = (-inf, 34.50) THEN Future Customer = {yes}
1312
IF Gender = {male} AND Age = (-inf, 36.50) THEN Future Customer = {yes}

adaa.analytics.rules/test/resources/reports/RegressionExpertSnCTest/test_methane.guided-r1, PD=0 or PD=1.methane-train-minimal.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
Rules
44
IF [PD = (-inf, 0.50)] AND MM31 = (-inf, 0.22) THEN MM116_pred = {0.40}
55
IF [PD = (-inf, 0.50)] AND PG072 = <1.75, 1.95) AND BA13 = <1074.50, 1075.50) THEN MM116_pred = {0.50}
6-
IF [PD = (-inf, 0.50)] AND MM116 = (-inf, 0.65) AND MM31 = <0.23, 0.28) THEN MM116_pred = {0.50}
6+
IF [PD = (-inf, 0.50)] AND MM31 = <0.23, 0.28) AND MM116 = (-inf, 0.65) THEN MM116_pred = {0.50}
77
IF [PD = <0.50, inf)] AND MM116 = <1.25, inf) THEN MM116_pred = {1.40}
88
IF [PD = <0.50, inf)] AND MM116 = <1.05, inf) THEN MM116_pred = {1.20}
99
IF [PD = <0.50, inf)] AND MM116 = <0.95, inf) THEN MM116_pred = {1.10}
1010
IF MM116 = (-inf, 0.75) AND MM31 = <0.23, inf) THEN MM116_pred = {0.60}
11-
IF MM116 = (-inf, 0.85) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.33) THEN MM116_pred = {0.50}
11+
IF MM31 = (-inf, 0.33) AND MM116 = (-inf, 0.85) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) THEN MM116_pred = {0.50}
1212
IF PD = (-inf, 0.50) AND MM116 = <0.75, inf) THEN MM116_pred = {0.90}
13-
IF MM116 = (-inf, 0.95) AND MM31 = <0.32, inf) THEN MM116_pred = {0.80}
13+
IF MM31 = <0.32, inf) AND MM116 = (-inf, 0.95) THEN MM116_pred = {0.80}

adaa.analytics.rules/test/resources/reports/RegressionExpertSnCTest/test_methane.guided-r2, PD=1 and MM116 le 1.methane-train-minimal.txt

-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,3 @@ Rules
1919
IF MM116 = (-inf, 0.85) AND DMM116 = (-inf, 0.05) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.36) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50}
2020
IF MM31 = (-inf, 0.36) THEN MM116_pred = {0.50}
2121
IF MM116 = (-inf, 0.95) AND MM31 = <0.32, inf) THEN MM116_pred = {0.80}
22-
IF MM116 = <1.05, inf) AND AS038 = <2.15, inf) AND MM31 = (-inf, 0.67) THEN MM116_pred = {1.20}

adaa.analytics.rules/test/resources/reports/RegressionExpertSnCTest/test_methane.guided-r4, DMM and MM116 and PD.methane-train-minimal.txt

-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,3 @@ Rules
1919
IF [MM116 = <0.55, inf)] AND [DMM116 = <-0.05, inf)] AND [PD = (-inf, 0.50)] AND MM31 = (-inf, 0.33) THEN MM116_pred = {0.60}
2020
IF [MM116 = <0.55, inf)] AND [DMM116 = <-0.05, inf)] AND [PD = (-inf, 0.50)] AND MM31 = <0.33, inf) THEN MM116_pred = {0.90}
2121
IF [MM116 = <0.55, inf)] AND [DMM116 = (-inf, 0.05)] AND [PD = (-inf, 0.50)] AND MM31 = <0.40, 0.56) AND BA13 = (-inf, 1074.50) THEN MM116_pred = {0.80}
22-
IF [MM116 = <0.55, inf)] AND [DMM116 = (-inf, 0.05)] AND AS038 = (-inf, 2.35) AND MM31 = <0.31, 0.51) AND BA13 = (-inf, 1075.50) THEN MM116_pred = {0.80}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11

22

33
Rules
4-
IF MM116 = (-inf, 0.60) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40}
4+
IF MM31 = (-inf, 0.24) AND MM116 = (-inf, 0.60) THEN MM116_pred = {0.40}
55
IF MM31 = <0.24, 0.31) AND PG072 = (-inf, 1.95) AND BA13 = (-inf, 1075.50) THEN MM116_pred = {0.50}
6-
IF MM116 = (-inf, 0.65) AND MM31 = <0.24, 0.30) AND BA13 = <1073.50, inf) THEN MM116_pred = {0.50}
7-
IF MM116 = <0.55, 0.85) AND DMM116 = <-0.05, inf) AND AS038 = <2.25, inf) AND MM31 = <0.26, inf) AND PG072 = (-inf, 1.95) AND BA13 = <1074.50, inf) THEN MM116_pred = {0.70}
8-
IF PD = (-inf, 0.50) AND MM116 = <0.55, 0.85) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.33) THEN MM116_pred = {0.60}
6+
IF MM31 = <0.24, 0.30) AND BA13 = <1073.50, inf) AND MM116 = (-inf, 0.65) THEN MM116_pred = {0.50}
7+
IF MM116 = <0.55, 0.85) AND DMM116 = <-0.05, inf) AND PG072 = (-inf, 1.95) AND AS038 = <2.25, inf) AND MM31 = <0.26, inf) AND BA13 = <1074.50, inf) THEN MM116_pred = {0.70}
8+
IF MM31 = (-inf, 0.33) AND MM116 = <0.55, 0.85) AND AS038 = (-inf, 2.45) AND DMM116 = <-0.05, inf) AND PD = (-inf, 0.50) THEN MM116_pred = {0.60}
99
IF MM31 = (-inf, 0.33) THEN MM116_pred = {0.50}
1010
IF MM116 = (-inf, 0.75) AND MM31 = <0.24, inf) THEN MM116_pred = {0.60}
1111
IF MM116 = <1.05, 1.25) AND AS038 = (-inf, 2.45) AND MM31 = <0.39, inf) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {1.20}
1212
IF MM116 = <1.05, 1.25) AND MM31 = <0.37, 0.57) AND PG072 = <1.75, inf) AND BA13 = <1069.50, inf) THEN MM116_pred = {1.20}
1313
IF MM116 = <0.95, 1.25) THEN MM116_pred = {1.10}
1414
IF MM116 = <0.95, 1.35) THEN MM116_pred = {1.10}
15-
IF MM116 = <0.75, 0.85) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) THEN MM116_pred = {0.80}
16-
IF MM116 = (-inf, 0.95) AND MM31 = <0.32, inf) THEN MM116_pred = {0.80}
17-
IF MM116 = <1.05, inf) AND AS038 = <2.15, inf) AND MM31 = (-inf, 0.67) THEN MM116_pred = {1.20}
15+
IF MM116 = <0.75, 0.85) AND AS038 = (-inf, 2.45) AND DMM116 = <-0.05, inf) THEN MM116_pred = {0.80}
16+
IF MM31 = <0.32, inf) AND MM116 = (-inf, 0.95) THEN MM116_pred = {0.80}
17+
IF AS038 = <2.15, inf) AND MM31 = (-inf, 0.67) AND MM116 = <1.05, inf) THEN MM116_pred = {1.20}
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11

22

33
Rules
4-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Relapse = {0} AND Donorage35 = {1} AND Recipientage = <17.85, inf) THEN
5-
IF [CD34kgx10d6 = (-inf, 11.86)] AND RecipientRh = {1} AND Recipientage = <17.85, inf) THEN
6-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Txpostrelapse = {0} AND CD3dCD34 = <6.25, inf) AND Rbodymass = <38.50, inf) THEN
7-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage = <31.95, inf) AND CD3dCD34 = <4.34, 38.68) THEN
8-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage = <33.15, inf) AND CD3dkgx10d8 = (-inf, 4.75) AND CD3dCD34 = <0.94, 51.97) AND Rbodymass = <33.50, inf) THEN
9-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Diseasegroup = {1} AND Relapse = {0} AND Donorage = <27.02, inf) AND Donorage35 = {0} AND CD3dCD34 = (-inf, 14.33) THEN
4+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Recipientage = <17.85, inf) AND Donorage35 = {1} AND Relapse = {0} THEN
5+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Recipientage = <17.85, inf) AND RecipientRh = {1} THEN
6+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Rbodymass = <38.50, inf) AND CD3dCD34 = <6.25, inf) AND Txpostrelapse = {0} THEN
7+
IF [CD34kgx10d6 = (-inf, 11.86)] AND CD3dCD34 = <4.34, 38.68) AND Donorage = <31.95, inf) THEN
8+
IF [CD34kgx10d6 = (-inf, 11.86)] AND CD3dkgx10d8 = (-inf, 4.75) AND Rbodymass = <33.50, inf) AND CD3dCD34 = <0.94, 51.97) AND Donorage = <33.15, inf) THEN
9+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage = <27.02, inf) AND Diseasegroup = {1} AND Relapse = {0} AND CD3dCD34 = (-inf, 14.33) AND Donorage35 = {0} THEN
1010
IF [CD34kgx10d6 = <11.86, inf)] AND Relapse = {0} THEN
11-
IF [CD34kgx10d6 = (-inf, 11.86)] AND CD3dkgx10d8 = (-inf, 4.65) AND Recipientage = <12.60, inf) THEN
12-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage35 = {1} AND Rbodymass = <32.75, inf) THEN
13-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage = <35.70, inf) AND CD3dCD34 = <1.30, inf) THEN
14-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Relapse = {0} AND Stemcellsource = {1} AND time_to_aGvHD_III_IV = <27, inf) AND Rbodymass = (-inf, 54.50) AND Recipientage = (-inf, 14.95) THEN
15-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Stemcellsource = {0} AND Donorage = <23.22, inf) AND extcGvHD = {1} AND Donorage35 = {0} AND Recipientage = <3.25, 8.40) THEN
16-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Recipientgender = {1} AND ABOmatch = {1} AND Txpostrelapse = {0} AND Recipientage10 = {0} AND CD3dCD34 = (-inf, 4.30) THEN
11+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Recipientage = <12.60, inf) AND CD3dkgx10d8 = (-inf, 4.65) THEN
12+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Rbodymass = <32.75, inf) AND Donorage35 = {1} THEN
13+
IF [CD34kgx10d6 = (-inf, 11.86)] AND CD3dCD34 = <1.30, inf) AND Donorage = <35.70, inf) THEN
14+
IF [CD34kgx10d6 = (-inf, 11.86)] AND time_to_aGvHD_III_IV = <27, inf) AND Recipientage = (-inf, 14.95) AND Relapse = {0} AND Rbodymass = (-inf, 54.50) AND Stemcellsource = {1} THEN
15+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Recipientage = <3.25, 8.40) AND Donorage = <23.22, inf) AND Stemcellsource = {0} AND Donorage35 = {0} AND extcGvHD = {1} THEN
16+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Recipientgender = {1} AND CD3dCD34 = (-inf, 4.30) AND ABOmatch = {1} AND Txpostrelapse = {0} AND Recipientage10 = {0} THEN
1717
IF [CD34kgx10d6 = <11.86, inf)] THEN
18-
IF [CD34kgx10d6 = (-inf, 11.86)] AND Relapse = {0} AND Donorage = (-inf, 37.64) AND extcGvHD = {1} AND Txpostrelapse = {0} AND HLAgrI = {0} THEN
18+
IF [CD34kgx10d6 = (-inf, 11.86)] AND Txpostrelapse = {0} AND Donorage = (-inf, 37.64) AND HLAgrI = {0} AND Relapse = {0} AND extcGvHD = {1} THEN
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22

33
Rules
4-
IF Relapse = {0} AND Donorage = (-inf, 45.53) AND Recipientage = (-inf, 17.45) THEN
4+
IF Donorage = (-inf, 45.53) AND Relapse = {0} AND Recipientage = (-inf, 17.45) THEN
55
IF HLAmismatch = {0} AND Relapse = {1} THEN
6-
IF Relapse = {0} AND Rbodymass = (-inf, 69) AND Recipientage = (-inf, 18) THEN
7-
IF aGvHDIIIIV = {1} AND ANCrecovery = (-inf, 19.50) AND Stemcellsource = {1} AND Txpostrelapse = {0} THEN
6+
IF Rbodymass = (-inf, 69) AND Relapse = {0} AND Recipientage = (-inf, 18) THEN
7+
IF ANCrecovery = (-inf, 19.50) AND Txpostrelapse = {0} AND Stemcellsource = {1} AND aGvHDIIIIV = {1} THEN
88
IF Donorage = <28.03, inf) AND CD34kgx10d6 = <1.27, 6.72) AND CD3dCD34 = <0.89, inf) AND Rbodymass = <31.50, inf) AND Recipientage = <11.55, inf) THEN

0 commit comments

Comments
 (0)