diff --git a/WSFPlugin/src/main/java/org/apidb/apicomplexa/wsfplugin/eda/GeneEdaVizWithComputePlugin.java b/WSFPlugin/src/main/java/org/apidb/apicomplexa/wsfplugin/eda/GeneEdaVizWithComputePlugin.java index 6c816a0..ecd4b88 100644 --- a/WSFPlugin/src/main/java/org/apidb/apicomplexa/wsfplugin/eda/GeneEdaVizWithComputePlugin.java +++ b/WSFPlugin/src/main/java/org/apidb/apicomplexa/wsfplugin/eda/GeneEdaVizWithComputePlugin.java @@ -36,6 +36,18 @@ public class GeneEdaVizWithComputePlugin extends AbstractEdaGenesPlugin { private static final Logger LOG = Logger.getLogger(GeneEdaVizWithComputePlugin.class); + private enum EffectDirection { + UP_AND_DOWN, UP_ONLY, DOWN_ONLY; + + static EffectDirection fromString(String s) { + return switch (s == null ? "" : s) { + case "up only" -> UP_ONLY; + case "down only" -> DOWN_ONLY; + default -> UP_AND_DOWN; + }; + } + } + private static class Point { String pointId; @@ -52,6 +64,7 @@ public String toString() { private double _effectSizeThreshold; private double _significanceThreshold; + private EffectDirection _effectDirection; private Path _tmpFile; @Override @@ -135,6 +148,7 @@ protected InputStream getEdaTabularDataStream(String edaBaseUrl, Map= _effectSizeThreshold; + if (!(pValue <= _significanceThreshold && effectSize >= _effectSizeThreshold)) return false; + return switch (_effectDirection) { + case UP_ONLY -> rawEffectSize > 0; + case DOWN_ONLY -> rawEffectSize < 0; + default -> true; + }; } catch (NumberFormatException e) { LOG.warn("Skipping EDA output row in which effectSize or pValue property is not a valid double value. Row = [ " + String.join(", ", edaRow) + " ]", e);