Fix standard classifier JSON logging

This commit is contained in:
Jamie Mac 2022-02-23 14:11:22 +00:00
parent 44b67022d2
commit 38c7ceb942

View File

@ -1,10 +1,22 @@
package clickTrainDetector.classification.standardClassifier; package clickTrainDetector.classification.standardClassifier;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import clickTrainDetector.classification.CTClassification; import clickTrainDetector.classification.CTClassification;
import clickTrainDetector.classification.SimpleClassifierJSONLogging; import clickTrainDetector.classification.SimpleClassifierJSONLogging;
import clickTrainDetector.classification.bearingClassifier.BearingClassification;
import clickTrainDetector.classification.bearingClassifier.BearingClassifier;
import clickTrainDetector.classification.idiClassifier.IDIClassification;
import clickTrainDetector.classification.idiClassifier.IDIClassifier;
import clickTrainDetector.classification.simplechi2classifier.Chi2CTClassification;
import clickTrainDetector.classification.simplechi2classifier.Chi2ThresholdClassifier;
import clickTrainDetector.classification.templateClassifier.CTTemplateClassifier;
import clickTrainDetector.classification.templateClassifier.TemplateClassification;
/** /**
@ -25,6 +37,11 @@ public class StandardClassificationJSON extends SimpleClassifierJSONLogging {
this.standardClassifier=ctClassifications; this.standardClassifier=ctClassifications;
} }
public StandardClassificationJSON() {
}
@Override @Override
public void writeJSONData(JsonGenerator jg, CTClassification ctClassification) { public void writeJSONData(JsonGenerator jg, CTClassification ctClassification) {
@ -35,27 +52,59 @@ public class StandardClassificationJSON extends SimpleClassifierJSONLogging {
@Override @Override
public CTClassification createClassification(JsonNode jTree) { public CTClassification createClassification(String jsonString) {
try {
JsonNode na = jTree.findValue("SPECIES"); ObjectMapper om = new ObjectMapper();
int speciesID; JsonNode jTree = om.readTree(new ByteArrayInputStream(jsonString.getBytes()));
if (na != null ) { // JsonNode nv = jTree.findValue("NAME");
speciesID = na.asInt();
}
else {
System.err.println("Cannot load template classifier");
return null;
}
CTClassification[] ctClassification = new CTClassification[standardClassifier.length];
for (int i=0; i<standardClassifier.length; i++) { JsonNode na = jTree.findValue("SPECIES");
ctClassification[i] = ((SimpleClassifierJSONLogging) standardClassifier[i].getJSONLogging()).createClassification(jTree); int speciesID;
if (na != null ) {
speciesID = na.asInt();
}
else {
System.err.println("Cannot load standard classifier");
return null;
}
//System.out.println("Hello load classification: " + standardClassifier.length);
CTClassification[] ctClassification = new CTClassification[StandardClassifier.CLASSIFIER_TYPES.length];
for (int i=0; i<ctClassification.length; i++) {
CTClassification classification = null;
switch (StandardClassifier.CLASSIFIER_TYPES[i]) {
case CHI2THRESHOLD:
classification = new Chi2CTClassification(jsonString);
break;
case IDICLASSIFIER:
classification = new IDIClassification(jsonString);
break;
case TEMPLATECLASSIFIER:
classification = new TemplateClassification(jsonString);
break;
case BEARINGCLASSIFIER:
classification = new BearingClassification(jsonString);
break;
default:
System.err.println("StandardClassification: classifier JSON not found");
break;
}
ctClassification[i] = classification;
}
StandardClassification stClassification =
new StandardClassification(ctClassification, speciesID);
return stClassification;
} catch (IOException e) {
System.err.println("Classification interpreting " + jsonString);
e.printStackTrace();
return null;
} }
StandardClassification stClassification =
new StandardClassification(ctClassification, speciesID);
return stClassification;
} }