package uk.ac.ox.zoo.seeg.abraid.mp.common.dto.csv;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import uk.ac.ox.zoo.seeg.abraid.mp.common.util.ParseUtils;
import java.io.IOException;
import java.util.List;
/**
* CSV DTO which represents the validation statistics for a submodel in a model run.
* Copyright (c) 2014 University of Oxford
*/
public class CsvSubmodelStatistic {
private Double areaUnderCurve; // "auc"
private Double sensitivity; // "sens"
private Double specificity; // "spec"
private Double proportionCorrectlyClassified; // "pcc"
private Double kappa; // "kappa"
private Double areaUnderCurveStandardDeviation; // "auc_sd"
private Double sensitivityStandardDeviation; // "sens_sd"
private Double specificityStandardDeviation; // "spec_sd"
private Double proportionCorrectlyClassifiedStandardDeviation; // "pcc_sd"
private Double kappaStandardDeviation; // "kappa_sd"
public CsvSubmodelStatistic() {
}
public Double getAreaUnderCurve() {
return areaUnderCurve;
}
@JsonProperty("auc")
public void setAreaUnderCurve(Double areaUnderCurve) {
this.areaUnderCurve = areaUnderCurve;
}
public Double getSensitivity() {
return sensitivity;
}
@JsonProperty("sens")
public void setSensitivity(Double sensitivity) {
this.sensitivity = sensitivity;
}
public Double getSpecificity() {
return specificity;
}
@JsonProperty("spec")
public void setSpecificity(Double specificity) {
this.specificity = specificity;
}
public Double getProportionCorrectlyClassified() {
return proportionCorrectlyClassified;
}
@JsonProperty("pcc")
public void setProportionCorrectlyClassified(Double proportionCorrectlyClassified) {
this.proportionCorrectlyClassified = proportionCorrectlyClassified;
}
public Double getKappa() {
return kappa;
}
@JsonProperty("kappa")
public void setKappa(Double kappa) {
this.kappa = kappa;
}
public Double getAreaUnderCurveStandardDeviation() {
return areaUnderCurveStandardDeviation;
}
@JsonProperty("auc_sd")
public void setAreaUnderCurveStandardDeviation(Double areaUnderCurveStandardDeviation) {
this.areaUnderCurveStandardDeviation = areaUnderCurveStandardDeviation;
}
public Double getSensitivityStandardDeviation() {
return sensitivityStandardDeviation;
}
@JsonProperty("sens_sd")
public void setSensitivityStandardDeviation(Double sensitivityStandardDeviation) {
this.sensitivityStandardDeviation = sensitivityStandardDeviation;
}
public Double getSpecificityStandardDeviation() {
return specificityStandardDeviation;
}
@JsonProperty("spec_sd")
public void setSpecificityStandardDeviation(Double specificityStandardDeviation) {
this.specificityStandardDeviation = specificityStandardDeviation;
}
public Double getProportionCorrectlyClassifiedStandardDeviation() {
return proportionCorrectlyClassifiedStandardDeviation;
}
@JsonProperty("pcc_sd")
public void setProportionCorrectlyClassifiedStandardDeviation(
Double proportionCorrectlyClassifiedStandardDeviation) {
this.proportionCorrectlyClassifiedStandardDeviation = proportionCorrectlyClassifiedStandardDeviation;
}
public Double getKappaStandardDeviation() {
return kappaStandardDeviation;
}
@JsonProperty("kappa_sd")
public void setKappaStandardDeviation(Double kappaStandardDeviation) {
this.kappaStandardDeviation = kappaStandardDeviation;
}
/**
* Parses a collection of CsvSubmodelStatistic entries from a csv string (header row expected).
* @param csv The csv string.
* @return A collection of CsvSubmodelStatistic entries.
* @throws IOException Thrown if the parsing fails.
*/
public static List<CsvSubmodelStatistic> readFromCSV(String csv) throws IOException {
CsvSchema schema = CsvSchema.emptySchema().withHeader();
return ParseUtils.readFromCsv(csv, CsvSubmodelStatistic.class, schema);
}
}