From fdb25b415d5464abae89a7f576fdc648e1cb37fc Mon Sep 17 00:00:00 2001 From: Joseph Ramsey Date: Sun, 19 Feb 2023 15:53:22 -0500 Subject: [PATCH 01/12] Update README --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 9dbb319cac..84a9e38641 100644 --- a/README +++ b/README @@ -8,7 +8,7 @@ https://s01.oss.sonatype.org/content/repositories/releases/io/github/cmu-phil/ The jar to launch the Tetrad GUI is here (please download this one and delete any old ones): -https://s01.oss.sonatype.org/content/repositories/releases/io/github/cmu-phil/tetrad-gui/7.2.0/tetrad-gui-7.2.0-launch.jar +https://s01.oss.sonatype.org/content/repositories/releases/io/github/cmu-phil/tetrad-gui/7.2.1/tetrad-gui-7.2.1-launch.jar The application will work on all major platforms once a recent version of the Java JRE is installed. (Corretto 18 is fine, for instance.) You may be able to launch it by double clicking the jar file name, though on a Mac, this presents some security challenges-- From 6b5d8275c517b063dd8774ebb5eb5e3ffd1c25e6 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Sun, 19 Feb 2023 18:23:00 -0500 Subject: [PATCH 02/12] BPC was missing a negation sign. --- .../src/main/java/edu/cmu/tetrad/search/BuildPureClusters.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/BuildPureClusters.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/BuildPureClusters.java index 022366bd0f..9146c434fc 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/BuildPureClusters.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/BuildPureClusters.java @@ -857,7 +857,7 @@ private List> filterAndOrderClusterings(List> baseListOf ClusterSignificance clusterSignificance = new ClusterSignificance(variables, covarianceMatrix); clusterSignificance.setCheckType(checkType); List cluster = ClusterSignificance.getInts(currentCluster); - if (clusterSignificance.significant(cluster, alpha)) { + if (!clusterSignificance.significant(cluster, alpha)) { continue; } From 97b80aa785a4f4d6a4f34a4c366735ef44b22ce2 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Sun, 19 Feb 2023 18:28:29 -0500 Subject: [PATCH 03/12] Changing version to 7.2.2-SNAPSHOT. --- data-reader/pom.xml | 2 +- pom.xml | 2 +- tetrad-gui/pom.xml | 2 +- tetrad-lib/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data-reader/pom.xml b/data-reader/pom.xml index 26c3d72495..42cadf0d6c 100644 --- a/data-reader/pom.xml +++ b/data-reader/pom.xml @@ -5,7 +5,7 @@ io.github.cmu-phil tetrad - 7.2.1 + 7.2.2-SNAPSHOT data-reader diff --git a/pom.xml b/pom.xml index 8b5c0feb0f..3fc0a4b304 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.github.cmu-phil tetrad - 7.2.1 + 7.2.2-SNAPSHOT pom Tetrad Project diff --git a/tetrad-gui/pom.xml b/tetrad-gui/pom.xml index 884ff8910f..2094e0fdd6 100644 --- a/tetrad-gui/pom.xml +++ b/tetrad-gui/pom.xml @@ -6,7 +6,7 @@ io.github.cmu-phil tetrad - 7.2.1 + 7.2.2-SNAPSHOT tetrad-gui diff --git a/tetrad-lib/pom.xml b/tetrad-lib/pom.xml index 7b3611392f..11bccf5fae 100644 --- a/tetrad-lib/pom.xml +++ b/tetrad-lib/pom.xml @@ -6,7 +6,7 @@ io.github.cmu-phil tetrad - 7.2.1 + 7.2.2-SNAPSHOT tetrad-lib From 228c9ae7e5bfbbf84c227fafa74d6cb4caa6ef58 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 13:48:24 -0500 Subject: [PATCH 04/12] Making CCD experimental and PagSamplingRfci non-experimental. --- .../edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/CCD.java | 2 ++ .../algcomparison/algorithm/oracle/pag/PagSamplingRfci.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/CCD.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/CCD.java index e60fa7ef68..c31da6d72f 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/CCD.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/CCD.java @@ -5,6 +5,7 @@ import edu.cmu.tetrad.algcomparison.utils.TakesIndependenceWrapper; import edu.cmu.tetrad.annotation.AlgType; import edu.cmu.tetrad.annotation.Bootstrapping; +import edu.cmu.tetrad.annotation.Experimental; import edu.cmu.tetrad.data.DataModel; import edu.cmu.tetrad.data.DataSet; import edu.cmu.tetrad.data.DataType; @@ -27,6 +28,7 @@ algoType = AlgType.forbid_latent_common_causes ) @Bootstrapping +@Experimental public class CCD implements Algorithm, TakesIndependenceWrapper { static final long serialVersionUID = 23L; private IndependenceWrapper test; diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/PagSamplingRfci.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/PagSamplingRfci.java index 076dbdb647..8d927198fb 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/PagSamplingRfci.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pag/PagSamplingRfci.java @@ -29,7 +29,7 @@ command = "pag-sampling-rfci", algoType = AlgType.allow_latent_common_causes ) -@Experimental +//@Experimental public class PagSamplingRfci implements Algorithm, HasKnowledge { public static final List PAG_SAMPLING_RFCI_PARAMETERS = new LinkedList<>(); From d0154e0bfcec83f4e4ad0f9985405a370b6f9b52 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 14:55:58 -0500 Subject: [PATCH 05/12] CStar was swapping parallelized with non-parallelized. --- .../algorithm/oracle/pattern/CStaR.java | 9 +++++---- .../src/main/java/edu/cmu/tetrad/search/Cstar.java | 12 +++++++++++- .../java/edu/cmu/tetrad/util/ConcurrencyUtils.java | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java index 8772b9f464..21584f0a4f 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java @@ -53,18 +53,18 @@ public Graph search(DataModel dataSet, Parameters parameters) { List possibleEffects = new ArrayList<>(); - String targetName = parameters.getString(Params.TARGETS); + String targetNames = parameters.getString(Params.TARGETS); - if (targetName.trim().equalsIgnoreCase("")) { + if (targetNames.trim().equalsIgnoreCase("")) { throw new IllegalStateException("Please specify target name(s)."); } - if (targetName.trim().equalsIgnoreCase("all")) { + if (targetNames.trim().equalsIgnoreCase("all")) { for (String name : dataSet.getVariableNames()) { possibleEffects.add(dataSet.getVariable(name)); } } else { - String[] names = targetName.split(","); + String[] names = targetNames.split(","); for (String name : names) { possibleEffects.add(dataSet.getVariable(name.trim())); @@ -72,6 +72,7 @@ public Graph search(DataModel dataSet, Parameters parameters) { } List possibleCauses = new ArrayList<>(dataSet.getVariables()); + possibleCauses.removeAll(possibleEffects); LinkedList> allRecords = cStaR.getRecords((DataSet) dataSet, possibleCauses, possibleEffects, test.getTest(dataSet, parameters)); diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java index 703383ccac..490196a17c 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java @@ -244,6 +244,8 @@ public double[][] call() { pattern = getPatternFges(sample); } else if (Cstar.this.patternAlgorithm == PatternAlgorithm.PC_STABLE) { pattern = getPatternPcStable(sample); + } else if (Cstar.this.patternAlgorithm == PatternAlgorithm.GRaSP) { + pattern = getPatternPcStable(sample); } else { throw new IllegalArgumentException("That type of of pattern algorithm is not configured: " + Cstar.this.patternAlgorithm); } @@ -600,6 +602,14 @@ private Graph getPatternPcStable(DataSet sample) { return pc.search(); } + private Graph getPatternGRaSP(DataSet sample) { + test.setVerbose(false); + Grasp alg = new Grasp(new SemBicScore(sample)); + alg.setVerbose(false); + alg.bestOrder(sample.getVariables()); + return alg.getGraph(true); + } + //=============================PRIVATE==============================// private Graph getPatternFges(DataSet sample) { @@ -687,7 +697,7 @@ private List runCallablesDoubleArray(List> task return results; } - public enum PatternAlgorithm {FGES, PC_STABLE} + public enum PatternAlgorithm {FGES, PC_STABLE, GRaSP} public enum SampleStyle {BOOTSTRAP, SPLIT} diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/util/ConcurrencyUtils.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/util/ConcurrencyUtils.java index ee49907489..7e32517c65 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/util/ConcurrencyUtils.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/util/ConcurrencyUtils.java @@ -8,7 +8,7 @@ public class ConcurrencyUtils { public static void runCallables(List> tasks, boolean parallelized) { if (tasks.isEmpty()) return; - if (parallelized) { + if (!parallelized) { for (Callable task : tasks) { try { task.call(); From 09ddf7346c18742dbf1b364460f4ed48b4f8756c Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 15:58:14 -0500 Subject: [PATCH 06/12] Removed conditional Gaussian option fro CStaR, as it was throwing exceptions. --- tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java index 490196a17c..c06c09e02b 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java @@ -178,10 +178,8 @@ public LinkedList> getRecords(DataSet dataSet, List pos this.test = test; } else if (test instanceof ChiSquare) { this.test = test; - } else if (test instanceof IndTestScore && ((IndTestScore) test).getWrappedScore() instanceof ConditionalGaussianScore) { - this.test = test; - } else { - throw new IllegalArgumentException("Expecting Fisher Z, Chi Square, Sem BIC, or Conditional Gaussian Score."); +Rem } else { + throw new IllegalArgumentException("Expecting Fisher Z, Chi Square, or Sem BIC."); } List>> minimalEffects = new ArrayList<>(); From 927406d049fd17fea25972ee28552c828febc895 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 15:58:29 -0500 Subject: [PATCH 07/12] Removed conditional Gaussian option fro CStaR, as it was throwing exceptions. --- tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java index c06c09e02b..dd257f73ea 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/search/Cstar.java @@ -178,7 +178,7 @@ public LinkedList> getRecords(DataSet dataSet, List pos this.test = test; } else if (test instanceof ChiSquare) { this.test = test; -Rem } else { + } else { throw new IllegalArgumentException("Expecting Fisher Z, Chi Square, or Sem BIC."); } From 65d9ef59441483f8d8c80019d58ac0b7b09d31a2 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 16:08:36 -0500 Subject: [PATCH 08/12] Added an exception if CStaR is not given tabular data. --- .../tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java index 21584f0a4f..6c198f0e66 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java @@ -74,6 +74,10 @@ public Graph search(DataModel dataSet, Parameters parameters) { List possibleCauses = new ArrayList<>(dataSet.getVariables()); possibleCauses.removeAll(possibleEffects); + if (dataSet instanceof DataSet) { + throw new IllegalArgumentException("Expecting tabular data for CStaR."); + } + LinkedList> allRecords = cStaR.getRecords((DataSet) dataSet, possibleCauses, possibleEffects, test.getTest(dataSet, parameters)); From 22bb3f6ddb5ac61246398b544cbe3dcd311f3fee Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 19:13:49 -0500 Subject: [PATCH 09/12] Added an exception if CStaR is not given tabular data. --- .../edu/cmu/tetrad/algcomparison/algorithm/mixed/Mgm.java | 4 ++++ .../tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/mixed/Mgm.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/mixed/Mgm.java index cd457b6c6b..c8b59cb3b6 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/mixed/Mgm.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/mixed/Mgm.java @@ -33,6 +33,10 @@ public Mgm() { @Override public Graph search(DataModel ds, Parameters parameters) { + if (!(ds instanceof DataSet)) { + throw new IllegalArgumentException("Expecting tabular data for MGM."); + } + DataSet _data = (DataSet) ds; for (int j = 0; j < _data.getNumColumns(); j++) { diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java index 6c198f0e66..10a445d116 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java @@ -74,7 +74,7 @@ public Graph search(DataModel dataSet, Parameters parameters) { List possibleCauses = new ArrayList<>(dataSet.getVariables()); possibleCauses.removeAll(possibleEffects); - if (dataSet instanceof DataSet) { + if (!(dataSet instanceof DataSet)) { throw new IllegalArgumentException("Expecting tabular data for CStaR."); } From 7375ac3bccafea4fb0e0c288782f10e4c5a31fe7 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 21:33:54 -0500 Subject: [PATCH 10/12] Possible causes could be effects of each other... --- .../tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java index 10a445d116..5306829bf1 100644 --- a/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java +++ b/tetrad-lib/src/main/java/edu/cmu/tetrad/algcomparison/algorithm/oracle/pattern/CStaR.java @@ -72,7 +72,7 @@ public Graph search(DataModel dataSet, Parameters parameters) { } List possibleCauses = new ArrayList<>(dataSet.getVariables()); - possibleCauses.removeAll(possibleEffects); +// possibleCauses.removeAll(possibleEffects); if (!(dataSet instanceof DataSet)) { throw new IllegalArgumentException("Expecting tabular data for CStaR."); From 5fc552b2332a7de7274c47357d20658b5aecc78a Mon Sep 17 00:00:00 2001 From: jdramsey Date: Mon, 20 Feb 2023 23:37:31 -0500 Subject: [PATCH 11/12] Security issue. --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 3fc0a4b304..1e1a62010b 100644 --- a/pom.xml +++ b/pom.xml @@ -132,6 +132,7 @@ org.apache.maven.plugins maven-site-plugin + 3.12.0 org.apache.velocity From 9443f1cd76b7804c07a1992bedf6eec52b11dd92 Mon Sep 17 00:00:00 2001 From: jdramsey Date: Tue, 21 Feb 2023 10:59:53 -0500 Subject: [PATCH 12/12] Changing to version 7.2.2. --- data-reader/pom.xml | 2 +- pom.xml | 2 +- tetrad-gui/pom.xml | 2 +- tetrad-lib/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data-reader/pom.xml b/data-reader/pom.xml index 42cadf0d6c..b7800db80f 100644 --- a/data-reader/pom.xml +++ b/data-reader/pom.xml @@ -5,7 +5,7 @@ io.github.cmu-phil tetrad - 7.2.2-SNAPSHOT + 7.2.2 data-reader diff --git a/pom.xml b/pom.xml index 1e1a62010b..d66e1d887f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.github.cmu-phil tetrad - 7.2.2-SNAPSHOT + 7.2.2 pom Tetrad Project diff --git a/tetrad-gui/pom.xml b/tetrad-gui/pom.xml index 2094e0fdd6..3bb8e5a0f1 100644 --- a/tetrad-gui/pom.xml +++ b/tetrad-gui/pom.xml @@ -6,7 +6,7 @@ io.github.cmu-phil tetrad - 7.2.2-SNAPSHOT + 7.2.2 tetrad-gui diff --git a/tetrad-lib/pom.xml b/tetrad-lib/pom.xml index 11bccf5fae..4a329fa458 100644 --- a/tetrad-lib/pom.xml +++ b/tetrad-lib/pom.xml @@ -6,7 +6,7 @@ io.github.cmu-phil tetrad - 7.2.2-SNAPSHOT + 7.2.2 tetrad-lib