package statalign.model.ext.plugins; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import statalign.base.Tree; import statalign.model.ext.ModelExtension; import statalign.postprocess.PostprocessManager; import statalign.postprocess.utils.RNAalifold; public class RNAAliFold extends ModelExtension { private final String pluginID = "rnaalifold"; String params = ""; @Override public String getPluginID() { return pluginID; } @Override public double logLikeFactor(Tree tree) { return 0; } @Override public void setActive(boolean active) { super.setActive(active); PostprocessManager.pluginParameters.setParameter("rnaalifold", ""); PostprocessManager.rnaMode = true; System.out.println("RNAalifold plugin is now "+(active?"enabled":"disabled")); } @Override public void setParam(String paramName, boolean paramValue) { if (paramName.equals("experimental")) { PostprocessManager.pluginParameters.setParameter("experimental", ""); } else if (paramName.equals("circ")) { params += " -circ"; } } public void setParam(String paramName, String paramValue) { if (paramName.equals("exe")) { RNAalifold.executable = paramValue; System.out.println("Setting rnaalifold executable path to "+paramValue); } else if (paramName.equals("T")) { params += " -T "+paramValue; } else if (paramName.equals("cov")) { params += " --cfactor "+paramValue; } else if (paramName.equals("n")) { params += " --nfactor "+paramValue; } } @Override public void init() { params = RNAalifold.executable + params; PostprocessManager.pluginParameters.setParameter("rnaalifold",params); } @Override public String getUsageInfo() { StringBuilder usage = new StringBuilder(); usage.append("________________________\n\n"); usage.append(" RNAalifold plugin \n\n"); usage.append("^^^^^^^^^^^^^^^^^^^^^^^^\n\n"); usage.append("java -jar statalign.jar -plugin:rnaalifold[OPTION1,OPTION2,...]\n"); usage.append("OPTIONS: \n"); usage.append("\tcirc\t\t(Activates circular mode.)\n"); usage.append("\texperimental\t\t(Activates experimental features.)\n"); usage.append("\tT=TEMP\t\t(Sets the temperature.)\n"); usage.append("\tcov=COV\t\t(Sets the covariance factor.)\n"); usage.append("\tn=NFACTOR\t\t(Sets the non-compatibility factor.)\n"); usage.append("\texe=EXE\t\t(Sets the path to the RNAalifold executable.)\n"); usage.append("\t\t\tThis should generally be set to \"/path/to/statalign/lib/RNAalifold.exe\"\n"); usage.append("\nSee online tutorial for further details."); usage.append("\nNote that the above syntax is designed to work in bash shells. " + "Other shells such as csh may require square brackets to be preceded by a backslash."); return usage.toString(); } }