Files
BiGpairSEQ/src/main/java/MatchingResult.java
2022-09-27 12:15:12 -05:00

118 lines
4.0 KiB
Java

import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class MatchingResult {
private final Map<String, String> metadata;
private final List<String> comments;
private final List<String> headers;
private final List<List<String>> allResults;
private final Map<String, String> matchMap;
public MatchingResult(Map<String, String> metadata, List<String> headers,
List<List<String>> allResults, Map<String, String>matchMap){
/*
* POSSIBLE KEYS FOR METADATA MAP ARE:
* sample plate filename *
* graph filename *
* matching weight *
* well populations *
* sequence read depth *
* sequence read error rate *
* read error collision rate *
* total alphas read from plate *
* total betas read from plate *
* alphas in graph (after pre-filtering) *
* betas in graph (after pre-filtering) *
* high overlap threshold for pairing *
* low overlap threshold for pairing *
* maximum occupancy difference for pairing *
* minimum overlap percent for pairing *
* pairing attempt rate *
* correct pairing count *
* incorrect pairing count *
* pairing error rate *
* time to generate graph (seconds) *
* time to pair sequences (seconds) *
* total simulation time (seconds) *
*/
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;
}
public Map<String, String> getMetadata() {return metadata;}
public List<String> getComments() {
return comments;
}
public List<List<String>> getAllResults() {
return allResults;
}
public List<String> getHeaders() {
return headers;
}
public Map<String, String> 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<Integer> 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 alphas read from plate"));
}
public Integer getBetaCount() {
return Integer.parseInt(metadata.get("total betas read from plate"));
}
public Integer getHighOverlapThreshold() { return Integer.parseInt(metadata.get("high overlap threshold for pairing"));}
public Integer getLowOverlapThreshold() { return Integer.parseInt(metadata.get("low overlap threshold for pairing"));}
public Integer getMaxOccupancyDifference() { return Integer.parseInt(metadata.get("maximum occupancy difference for pairing"));}
public Integer getMinOverlapPercent() { return Integer.parseInt(metadata.get("minimum overlap percent for pairing"));}
public Double getPairingAttemptRate() { return Double.parseDouble(metadata.get("pairing attempt rate"));}
public Integer getCorrectPairingCount() { return Integer.parseInt(metadata.get("correct pairing count"));}
public Integer getIncorrectPairingCount() { return Integer.parseInt(metadata.get("incorrect pairing count"));}
public Double getPairingErrorRate() { return Double.parseDouble(metadata.get("pairing error rate"));}
public String getSimulationTime() { return metadata.get("total simulation time (seconds)"); }
}