diff --git a/src/main/java/Plate.java b/src/main/java/Plate.java index 5d4ea60..75ca2c8 100644 --- a/src/main/java/Plate.java +++ b/src/main/java/Plate.java @@ -149,24 +149,22 @@ public class Plate { } //returns a map of the counts of the sequence at cell index sIndex, in all wells - public Map assayWellsSequenceS(int... sIndices){ - return this.assayWellsSequenceS(0, size, sIndices); + public void assayWellsSequenceS(Map sequences, int... sIndices){ + this.assayWellsSequenceS(sequences, 0, size, sIndices); } //returns a map of the counts of the sequence at cell index sIndex, in a specific well - public Map assayWellsSequenceS(int n, int... sIndices) { - return this.assayWellsSequenceS(n, n+1, sIndices); + public void assayWellsSequenceS(Map sequences, int n, int... sIndices) { + this.assayWellsSequenceS(sequences, n, n+1, sIndices); } //returns a map of the counts of the sequence at cell index sIndex, in a range of wells - public Map assayWellsSequenceS(int start, int end, int... sIndices) { - Map assay = new HashMap<>(); + public void assayWellsSequenceS(Map sequences, int start, int end, int... sIndices) { for(int sIndex: sIndices){ for(int i = start; i < end; i++){ - countSequences(assay, wells.get(i), sIndex); + countSequences(sequences, wells.get(i), sIndex); } } - return assay; } //For the sequences at cell indices sIndices, counts number of unique sequences in the given well into the given map private void countSequences(Map wellMap, List well, int... sIndices) { diff --git a/src/main/java/Simulator.java b/src/main/java/Simulator.java index 698993c..1db1853 100644 --- a/src/main/java/Simulator.java +++ b/src/main/java/Simulator.java @@ -36,8 +36,10 @@ public class Simulator implements GraphModificationFunctions { if(verbose){System.out.println("Making well maps");} - Map allAlphas = samplePlate.assayWellsSequenceS(alphaIndices); - Map allBetas = samplePlate.assayWellsSequenceS(betaIndices); + Map allAlphas = new HashMap<>(); + samplePlate.assayWellsSequenceS(allAlphas, alphaIndices); + Map allBetas = new HashMap<>(); + samplePlate.assayWellsSequenceS(allBetas, betaIndices); int alphaCount = allAlphas.size(); if(verbose){System.out.println("All alphas count: " + alphaCount);} int betaCount = allBetas.size(); @@ -658,18 +660,20 @@ public class Simulator implements GraphModificationFunctions { Map rowSequenceCounts, Map columnSequenceCounts, double[][] weights){ - Map wellNRowSequences = null; - Map wellNColumnSequences = null; + Map wellNRowSequences; + Map wellNColumnSequences; int vertexStartValue = rowSequenceToVertexMap.size(); int numWells = samplePlate.getSize(); for (int n = 0; n < numWells; n++) { - wellNRowSequences = samplePlate.assayWellsSequenceS(n, rowSequenceIndices); + wellNRowSequences = new HashMap<>(); + samplePlate.assayWellsSequenceS(wellNRowSequences, n, rowSequenceIndices); for (String a : wellNRowSequences.keySet()) { if(allRowSequences.containsKey(a)){ rowSequenceCounts.merge(a, 1, (oldValue, newValue) -> oldValue + newValue); } } - wellNColumnSequences = samplePlate.assayWellsSequenceS(n, colSequenceIndices); + wellNColumnSequences = new HashMap<>(); + samplePlate.assayWellsSequenceS(wellNColumnSequences, n, colSequenceIndices); for (String b : wellNColumnSequences.keySet()) { if(allColumnSequences.containsKey(b)){ columnSequenceCounts.merge(b, 1, (oldValue, newValue) -> oldValue + newValue);