FCI parameter "test ordering" not available in version 7.6.1
JMUB opened this issue · 16 comments
Hello,
in the Tetrad version 7.1.0 the FCI algorithm had the "test ordering" parameter.
Why was this removed in the newer versions?
I tried to replicate results obtained with version 7.1.0 with the new 7.6.1 version but I am getting different outputs (all parameters are the same except for the now missing "test ordering"). I wonder if the "test ordering" could be causing this mismatch.
You know, you may be right; this parameter was removed, probably for simplicity:
<h3 class="parameter_description"
id="pcHeuristic">pcHeuristic</h3>
<ul class="parameter_description_list">
<li>Short Description: <span id="pcHeuristic_short_desc">
Heuristics to stabilize skeleton: 0 = None, 1 = Heuristic 1, 2 = Heuristic 2, 3 = Heuristic 3
</span></li>
<li>Long Description: <span
id="pcHeuristic_long_desc">
NONE = no heuristic, PC-1 = sort nodes alphabetically;
PC-1 = sort edges by p-value; PC-3 = additionally sort edges in reverse order
using p-values of associated independence facts. See CPS.
</span></li>
<li>Default Value: <span
id="pcHeuristic_default_value">0</span></li>
<li>Lower Bound: <span
id="pcHeuristic_lower_bound">0</span></li>
<li>Upper Bound: <span
id="pcHeuristic_upper_bound">3</span></li>
<li>Value Type: <span
id="pcHeuristic_value_type">Integer</span></li>
</ul>
That could be put back and hooked up; the code for it is still in the repository. Do you think this is what you're looking for? If you want to email me directly with more details, feel free; the codebase has changed quite a lot since that version, though I don't think FCI should have changed. I know one knowledge bug, however, that was fixed in the interim.
Thanks for the fast reply!
If I undertand you correctly, FCI in version 7.6.1 uses no heuristic for the test ordering.
Additionally, results obtained with version 7.1.0 might be unreliable due to the bug in the knowledge box.
Given that the test ordeing parameter was removed from the GUI, does it mean that it doesn't have a big impact in the discovery results?
I didn't in my testing, although I've learned the hard way that real data poses some challenges that simulated data does not.
As I said, I'm willing to put the parameter back. I see no reason not to include it for users who want to try it out. I'll try to get to that in the next few days. Sorry, I've had several things on my plate in the last few days. But I'll get to it.
However, I should say Tetrad now has two new algorithms for the latent variable case that show some promise: GRaSP-FCI and BFCI. We won't have a paper reference for these yet, although you may want to try them out.
By the way, are you using the Tetrad interface or some other method like py-tetrad, rpy-tetrad, or command line?
As I said, I'm willing to put the parameter back. I see no reason not to include it for users who want to try it out. I'll try to get to that in the next few days. Sorry, I've had several things on my plate in the last few days. But I'll get to it.
That would be appreciated. That would enable a simple replication/verification of results obtained with previous versions.
However, I should say Tetrad now has two new algorithms for the latent variable case that show some promise: GRaSP-FCI and BFCI. We won't have a paper reference for these yet, although you may want to try them out.
Thanks for pointing this out. I already tried GRaSP-FCI.
By the way, are you using the Tetrad interface or some other method like py-tetrad, rpy-tetrad, or command line?
I am using the java executable.
I'll work on that today and can post a snapshot build for you of the Java executable. I don't know yet whether it will solve your problem, but it's worth a shot. The entire codebase has been developed a lot since 7.1.0--see the release notes.
Done. I hope this works. Here's the snapshot:
You should be able to download this and run it the usual way. FCI now has the 'pcHeuristic' parameter restored.
As I said though, there have been many changes. Here are the ones since the last published version:
By the way also, there's been some confusion about JDK versions. We are settling on JDK 17 and are compiling Tetrad for the foreseeable future under Corretto's JDK 17, as no one so far has had any difficulty with that.
Done. I hope this works. Here's the snapshot:
You should be able to download this and run it the usual way. FCI now has the 'pcHeuristic' parameter restored.
Thanks for providing the snapshot. I tried to run it in the same machine I run version 7.6.1 but unfortunately I get the following error:
Error: LinkageError occurred while loading main class edu.cmu.tetradapp.Tetrad java.lang.UnsupportedClassVersionError: edu/cmu/tetradapp/Tetrad has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
I am not a Java expert, so I don't know how to deal with it.
This is my java version:
openjdk version "11.0.21" 2023-10-17 OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
According to the instructions provided in the wiki, I should update to JDK with major version 17.
https://github.com/cmu-phil/tetrad/wiki/Setting-up-Java-for-Tetrad
Updating the JDK version worked.
Thanks for the support!