From 47e23addfa09086dad1fdfec479810ccce9ebe47 Mon Sep 17 00:00:00 2001 From: efischer Date: Fri, 18 Feb 2022 17:42:05 -0600 Subject: [PATCH] Do new filtering before matching --- out/artifacts/TCellSim_jar/TCellSim.jar | Bin 1574256 -> 1574304 bytes src/main/java/Simulator.java | 20 ++++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/out/artifacts/TCellSim_jar/TCellSim.jar b/out/artifacts/TCellSim_jar/TCellSim.jar index 705ce0adef8e50bd97fe54eddf0f5879cb87608a..f9716d7f09fefd72d4e7d575f35aaca1a73f7413 100644 GIT binary patch delta 29517 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 JtBhDE{tu|C3j6>7 diff --git a/src/main/java/Simulator.java b/src/main/java/Simulator.java index c3b83c8..81a2e02 100644 --- a/src/main/java/Simulator.java +++ b/src/main/java/Simulator.java @@ -196,12 +196,12 @@ public class Simulator { //Filter by overlap size if(verbose){System.out.println("Eliminating edges with weights much less than occupancy values");} - filterByOverlapSize(graph, alphaWellCounts, betaWellCounts); + filterByOverlapSize(graph, alphaWellCounts, betaWellCounts, plateVtoAMap, plateVtoBMap); if(verbose){System.out.println("Edges with weights much less than occupancy values set to 0.0");} //Filter by relative occupancy if(verbose){System.out.println("Eliminating edges between vertices of massively different occupancy");} - filterByRelativeOccupancy(graph, alphaWellCounts, betaWellCounts); + filterByRelativeOccupancy(graph, alphaWellCounts, betaWellCounts, plateVtoAMap, plateVtoBMap); if(verbose){System.out.println("Edges between vertices of massively different occupancy set to 0.0");} @@ -679,10 +679,12 @@ public class Simulator { //Remove edges for pairs with large occupancy discrepancy private static void filterByRelativeOccupancy(SimpleWeightedGraph graph, Map alphaWellCounts, - Map betaWellCounts) { + Map betaWellCounts, + Map plateVtoAMap, + Map plateVtoBMap) { for (DefaultWeightedEdge e : graph.edgeSet()) { - Integer alphaOcc = alphaWellCounts.get(graph.getEdgeSource(e)); - Integer betaOcc = betaWellCounts.get(graph.getEdgeTarget(e)); + Integer alphaOcc = alphaWellCounts.get(plateVtoAMap.get(graph.getEdgeSource(e))); + Integer betaOcc = betaWellCounts.get(plateVtoBMap.get(graph.getEdgeTarget(e))); //Adjust this to something cleverer later if (Math.abs(alphaOcc - betaOcc) >= 20) { graph.setEdgeWeight(e, 0.0); @@ -693,10 +695,12 @@ public class Simulator { //Remove edges for pairs where overlap size is significantly lower than the well occupancy private static void filterByOverlapSize(SimpleWeightedGraph graph, Map alphaWellCounts, - Map betaWellCounts) { + Map betaWellCounts, + Map plateVtoAMap, + Map plateVtoBMap) { for (DefaultWeightedEdge e : graph.edgeSet()) { - Integer alphaOcc = alphaWellCounts.get(graph.getEdgeSource(e)); - Integer betaOcc = betaWellCounts.get(graph.getEdgeTarget(e)); + Integer alphaOcc = alphaWellCounts.get(plateVtoAMap.get(graph.getEdgeSource(e))); + Integer betaOcc = betaWellCounts.get(plateVtoBMap.get(graph.getEdgeTarget(e))); //Adjust this to something cleverer later Integer min = alphaOcc > betaOcc ? betaOcc : alphaOcc; if (min - graph.getEdgeWeight(e) >= 15) {