package uk.ac.ed.inf.biopepa.ui.wizards.timeseries;
import uk.ac.ed.inf.biopepa.core.compiler.CompiledExpression;
import uk.ac.ed.inf.biopepa.core.compiler.ModelCompiler;
import uk.ac.ed.inf.biopepa.core.compiler.VariableData;
import uk.ac.ed.inf.biopepa.core.sba.ExperimentLine;
import uk.ac.ed.inf.biopepa.core.sba.ExperimentSet;
import uk.ac.ed.inf.biopepa.core.sba.LineStringBuilder;
import uk.ac.ed.inf.biopepa.ui.interfaces.BioPEPAModel;
public class RateVariablesExperimentPage extends AbstractExperimentPage {
public final static String wizardPageName = "Rate Variables Setup Page";
// private BioPEPAModel model;
public RateVariablesExperimentPage(BioPEPAModel model) {
super(wizardPageName);
// this.model = model;
setTitle("Rate Variables Setup and Experimentation Page");
setDescription("Set up experiments over rate variables ");
LineStringBuilder sb = new LineStringBuilder();
sb.append("For each variable that you wish to range over ");
sb.appendLine("either check the left box");
sb.append("and enter a comma ");
sb.appendLine("separated list of double values or check the right ");
sb.append("box and enter a range via start and stop values with ");
sb.appendLine("a step size.");
sb.appendLine("Any rate variable with unchecked boxes will not be ranged ");
sb.appendLine("over in this experiment and their default values used.");
super.setHeader(sb.toString());
/* Now we must set up the experiment object names */
ModelCompiler mCompiler = model.getCompiledModel();
VariableData[] dynVariableData = mCompiler.getStaticVariables();
this.experimentObjectNameHints = new NameHintPair[dynVariableData.length];
int i = 0;
for (VariableData dynVariable : dynVariableData) {
String name = dynVariable.getName();
CompiledExpression value = dynVariable.getValue();
String hint = value.toString();
if (hint.length() > 30){
hint = "expr";
}
experimentObjectNameHints[i++] = new NameHintPair(name, hint);
}
}
@Override
public void addExperimentArrays(ExperimentSet experiment) {
for (ArrayInput arrayInput : arrayInputs) {
String varName = arrayInput.getName();
Number[] values = arrayInput.getDoubleValues();
for (Number value : values) {
ExperimentLine eline =
new ExperimentLine(varName + "-" + value);
eline.addRateValue(varName, value);
experiment.addExperimentLine(eline);
}
}
}
}