package com.datascience.utils.transformations.simple; import com.datascience.core.base.AssignedLabel; import com.datascience.core.base.ContValue; import com.datascience.core.results.WorkerContResults; import com.datascience.utils.ITransformation; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import java.util.Iterator; /** * @Author: artur */ public class WorkerContResultTransform implements ITransformation<WorkerContResults, String> { protected Joiner joiner; protected Splitter splitter; protected CollectionTransform<AssignedLabel<ContValue>> assignedLabelCollectionTransform; public WorkerContResultTransform(String separator, CollectionTransform<AssignedLabel<ContValue>> assignedLabelCollectionTransform){ joiner = Joiner.on(separator).useForNull("null"); splitter = Splitter.on(separator); this.assignedLabelCollectionTransform = assignedLabelCollectionTransform; } @Override public String transform(WorkerContResults result) { return joiner.join(new Double[] { result.getEst_rho(), result.getEst_mu(), result.getEst_sigma(), result.getTrueRho(), result.getTrueMu(), result.getTrueSigma() }) + ";" + assignedLabelCollectionTransform.transform(result.getZetaValues()); } @Override public WorkerContResults inverse(String object) { WorkerContResults ret = new WorkerContResults(); String[] splitted = object.split(";"); Iterator<String> values = splitter.split(splitted[0]).iterator(); ret.setEst_rho(getDoubleValue(values.next())); ret.setEst_mu(getDoubleValue(values.next())); ret.setEst_sigma(getDoubleValue(values.next())); ret.setTrueRho(getDoubleValue(values.next())); ret.setTrueMu(getDoubleValue(values.next())); ret.setTrueSigma(getDoubleValue(values.next())); ret.setZetaValue(assignedLabelCollectionTransform.inverse(splitted[1])); return ret; } private Double getDoubleValue(String s){ return s == null || s.equals("null") ? null : Double.valueOf(s); } }