import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Map; public class MatchingResult { private final Map metadata; private final List comments; private final List headers; private final List> allResults; private final Map matchMap; private final Duration time; public MatchingResult(Map metadata, List headers, List> allResults, MapmatchMap, Duration time){ /* * POSSIBLE KEYS FOR METADATA MAP ARE: * sample plate filename * * graph filename * * well populations * * total alphas found * * total betas found * * high overlap threshold * low overlap threshold * maximum occupancy difference * minimum overlap percent * pairing attempt rate * correct pairing count * incorrect pairing count * pairing error rate * simulation time */ this.metadata = metadata; this.comments = new ArrayList<>(); for (String key : metadata.keySet()) { comments.add(key +": " + metadata.get(key)); } this.headers = headers; this.allResults = allResults; this.matchMap = matchMap; this.time = time; } public Map getMetadata() {return metadata;} public List getComments() { return comments; } public List> getAllResults() { return allResults; } public List getHeaders() { return headers; } public Map getMatchMap() { return matchMap; } public Duration getTime() { return time; } public String getPlateFilename() { return metadata.get("sample plate filename"); } public String getGraphFilename() { return metadata.get("graph filename"); } public Integer[] getWellPopulations() { List wellPopulations = new ArrayList<>(); String popString = metadata.get("well populations"); for (String p : popString.split(", ")) { wellPopulations.add(Integer.parseInt(p)); } Integer[] popArray = new Integer[wellPopulations.size()]; return wellPopulations.toArray(popArray); } public Integer getAlphaCount() { return Integer.parseInt(metadata.get("total alpha count")); } public Integer getBetaCount() { return Integer.parseInt(metadata.get("total beta count")); } //put in the rest of these methods following the same pattern }