Skip to content

Commit 8df1be5

Browse files
committed
Superficial updates to InputEditors.
1 parent f0e837e commit 8df1be5

5 files changed

Lines changed: 52 additions & 39 deletions

File tree

src/main/java/bdmmprime/beauti/EpochVisualizerPane.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void repaintCanvas() {
7171
param.initAndValidate(); // Respond to any process length updates
7272

7373
boolean useAges = param.timesAreAgesInput.get();
74-
double processLength = param.processLengthInput.get().getArrayValue();
74+
double processLength = param.processLengthInput.get().get();
7575
TypeSet typeSet = param.typeSetInput.get();
7676

7777
if (processLength <= 0.0) {

src/main/java/bdmmprime/beauti/SkylineInputEditor.java

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import beast.base.evolution.tree.TraitSet;
2626
import beast.base.evolution.tree.Tree;
2727
import beast.base.inference.parameter.RealParameter;
28+
import beast.base.spec.domain.Real;
29+
import beast.base.spec.inference.parameter.RealVectorParam;
2830
import beastfx.app.inputeditor.BeautiDoc;
2931
import beastfx.app.inputeditor.InputEditor;
3032
import beastfx.app.util.FXUtils;
@@ -109,13 +111,13 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
109111
mainInputBox.getChildren().add(changeTimesBox);
110112

111113
if (nChanges > 0) {
112-
updateChangeTimesUI((RealParameter) skylineParameter.changeTimesInput.get(),
114+
updateChangeTimesUI((RealVectorParam<? extends Real>) skylineParameter.changeTimesInput.get(),
113115
changeTimesEntryRow);
114116
timesAreAgesCheckBox.setSelected(skylineParameter.timesAreAgesInput.get());
115117
timesAreRelativeCheckBox.setSelected(skylineParameter.timesAreRelativeInput.get());
116118

117119
estimateTimesCheckBox.setSelected(
118-
((RealParameter) skylineParameter.changeTimesInput.get())
120+
((RealVectorParam<? extends Real>) skylineParameter.changeTimesInput.get())
119121
.isEstimatedInput.get());
120122
} else {
121123
changeTimesBox.setVisible(false);
@@ -124,7 +126,8 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
124126

125127
// Add elements specific to values
126128

127-
RealParameter valuesParameter = (RealParameter) skylineParameter.skylineValuesInput.get();
129+
RealVectorParam<? extends Real> valuesParameter =
130+
(RealVectorParam<? extends Real>) skylineParameter.skylineValuesInput.get();
128131

129132
boxHoriz = FXUtils.newHBox();
130133
boxHoriz.getChildren().add(new Label("Values:"));
@@ -163,7 +166,7 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
163166
mainInputBox.getChildren().add(epochVisualizer);
164167

165168
int nTypes = skylineParameter.getNTypes();
166-
if (valuesParameter.getDimension() == (nChanges + 1)) {
169+
if (valuesParameter.size() == (nChanges + 1)) {
167170
if (nTypes > 1) {
168171
scalarRatesCheckBox.setSelected(true);
169172
scalarRatesCheckBox.disableProperty().set(false);
@@ -186,13 +189,14 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
186189
System.out.println(oldValue + " -> " + newValue);
187190

188191
if (newValue > 0) {
189-
RealParameter param = (RealParameter) skylineParameter.changeTimesInput.get();
192+
RealVectorParam<? extends Real> param =
193+
(RealVectorParam<? extends Real>) skylineParameter.changeTimesInput.get();
190194
if (param == null) {
191195
if (!doc.pluginmap.containsKey(getChangeTimesParameterID())) {
192-
param = new RealParameter("0.0");
196+
param = new RealVectorParam<>(new double[] {0.0}, Real.INSTANCE);
193197
param.setID(getChangeTimesParameterID());
194198
} else {
195-
param = (RealParameter) doc.pluginmap.get(getChangeTimesParameterID());
199+
param = (RealVectorParam<? extends Real>) doc.pluginmap.get(getChangeTimesParameterID());
196200
}
197201
skylineParameter.changeTimesInput.setValue(param, skylineParameter);
198202
}
@@ -205,7 +209,7 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
205209
ensureValuesConsistency();
206210

207211
if (newValue > 0) {
208-
updateChangeTimesUI((RealParameter) skylineParameter.changeTimesInput.get(),
212+
updateChangeTimesUI((RealVectorParam<? extends Real>) skylineParameter.changeTimesInput.get(),
209213
changeTimesEntryRow);
210214
timesAreAgesCheckBox.setSelected(skylineParameter.timesAreAgesInput.get());
211215

@@ -248,17 +252,18 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
248252

249253
distributeChangeTimesButton.setOnAction(e -> {
250254

251-
RealParameter changeTimesParam = (RealParameter) skylineParameter.changeTimesInput.get();
252-
int nTimes = changeTimesParam.getDimension();
253-
double processLength = skylineParameter.processLengthInput.get().getArrayValue();
255+
RealVectorParam<? extends Real> changeTimesParam =
256+
(RealVectorParam<? extends Real>) skylineParameter.changeTimesInput.get();
257+
int nTimes = changeTimesParam.size();
258+
double processLength = skylineParameter.processLengthInput.get().get();
254259

255260
if (skylineParameter.timesAreRelativeInput.get()) {
256261
for (int i = 0; i < nTimes; i++) {
257-
changeTimesParam.setValue(i, ((double) (i + 1)) / (nTimes + 1));
262+
changeTimesParam.set(i, ((double) (i + 1)) / (nTimes + 1));
258263
}
259264
} else {
260265
for (int i = 0; i < nTimes; i++) {
261-
changeTimesParam.setValue(i, processLength*(i+1) / (nTimes + 1));
266+
changeTimesParam.set(i, processLength*(i+1) / (nTimes + 1));
262267
}
263268
}
264269

@@ -301,21 +306,21 @@ public void init(Input<?> input, BEASTInterface beastObject, int itemNr,
301306
* @param parameter change times parameter
302307
* @param changeTimesEntryRow HBox containing time inputs
303308
*/
304-
void updateChangeTimesUI(RealParameter parameter,
309+
void updateChangeTimesUI(RealVectorParam<? extends Real> parameter,
305310
HBox changeTimesEntryRow) {
306311
changeTimesEntryRow.getChildren().clear();
307312
changeTimesEntryRow.getChildren().add(new Label("Change times:"));
308-
for (int i=0; i<parameter.getDimension(); i++) {
313+
for (int i=0; i<parameter.size(); i++) {
309314
changeTimesEntryRow.getChildren().add(new Label("Epoch " + (i+1) + "->" + (i+2) + ": "));
310-
TextField textField = new TextField(parameter.getValue(i).toString());
315+
TextField textField = new TextField(String.valueOf(parameter.get(i)));
311316

312317
textField.setPrefWidth(50);
313318
textField.setPadding(new Insets(0));
314319
HBox.setMargin(textField, new Insets(0, 10, 0, 0));
315320

316321
int index = i;
317322
textField.textProperty().addListener((observable, oldValue, newValue) -> {
318-
parameter.setValue(index, Double.valueOf(newValue));
323+
parameter.set(index, Double.parseDouble(newValue));
319324
sanitiseRealParameter(parameter);
320325
skylineParameter.initAndValidate();
321326
System.out.println(skylineParameter);
@@ -326,10 +331,10 @@ void updateChangeTimesUI(RealParameter parameter,
326331
}
327332
}
328333

329-
void sanitiseRealParameter(RealParameter parameter) {
334+
void sanitiseRealParameter(RealVectorParam<? extends Real> parameter) {
330335
parameter.valuesInput.setValue(
331-
Arrays.stream(parameter.getDoubleValues())
332-
.mapToObj(String::valueOf)
336+
parameter.getElements().stream()
337+
.map(Object::toString)
333338
.collect(Collectors.joining(" ")),
334339
parameter);
335340
parameter.initAndValidate();

src/main/java/bdmmprime/beauti/SkylineMatrixInputEditor.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import beast.base.core.BEASTInterface;
2222
import beast.base.core.Input;
2323
import beast.base.inference.parameter.RealParameter;
24+
import beast.base.spec.domain.Real;
25+
import beast.base.spec.inference.parameter.RealVectorParam;
2426
import beastfx.app.inputeditor.BeautiDoc;
2527
import beastfx.app.inputeditor.InputEditor;
2628
import javafx.beans.binding.Bindings;
@@ -78,8 +80,9 @@ void ensureValuesConsistency() {
7880
int nTypes = skylineParameter.typeSetInput.get().getNTypes();
7981
int nEpochs = skylineParameter.changeTimesInput.get() == null
8082
? 1
81-
: skylineParameter.changeTimesInput.get().getDimension() + 1;
82-
RealParameter valuesParam = (RealParameter) skylineParameter.skylineValuesInput.get();
83+
: skylineParameter.changeTimesInput.get().size() + 1;
84+
RealVectorParam<? extends Real> valuesParam =
85+
(RealVectorParam<? extends Real>) skylineParameter.skylineValuesInput.get();
8386

8487
// System.out.println("Number of epochs: " + nEpochs);
8588

@@ -89,7 +92,7 @@ void ensureValuesConsistency() {
8992
valuesParam.setDimension(nTypes*(nTypes-1)*nEpochs);
9093

9194
if (skylineParameter.changeTimesInput.get() != null)
92-
((RealParameter)skylineParameter.changeTimesInput.get()).initAndValidate();
95+
((RealVectorParam<? extends Real>)skylineParameter.changeTimesInput.get()).initAndValidate();
9396
sanitiseRealParameter(valuesParam);
9497
skylineParameter.initAndValidate();
9598
}
@@ -102,7 +105,8 @@ void updateValuesUI() {
102105
int nChanges = skylineMatrix.getChangeCount();
103106
int nTypes = skylineMatrix.getNTypes();
104107

105-
RealParameter valuesParameter = (RealParameter) skylineMatrix.skylineValuesInput.get();
108+
RealVectorParam<? extends Real> valuesParameter =
109+
(RealVectorParam<? extends Real>) skylineMatrix.skylineValuesInput.get();
106110

107111
TableColumn<ValuesTableEntry, String> typeCol = new TableColumn<>("From Type");
108112
typeCol.setCellValueFactory(p -> new ObservableValueBase<>() {
@@ -141,12 +145,12 @@ public String getValue() {
141145
public Double getValue() {
142146
int from = ((MatrixValuesEntry) p.getValue()).fromType;
143147
if (from < 0)
144-
return valuesParameter.getValue(epochIdx);
148+
return valuesParameter.get(epochIdx);
145149

146150
if (from == toType)
147151
return Double.NaN;
148152

149-
return valuesParameter.getValue(
153+
return valuesParameter.get(
150154
epochIdx*nTypes*(nTypes-1)
151155
+ (nTypes-1)*from
152156
+ (toType<from ? toType : toType-1));
@@ -181,9 +185,9 @@ public void updateItem(Double item, boolean empty) {
181185
int from = ((MatrixValuesEntry) e.getTableView()
182186
.getItems().get(e.getTablePosition().getRow())).fromType;
183187
if (from < 0) {
184-
valuesParameter.setValue(epochIdx, e.getNewValue());
188+
valuesParameter.set(epochIdx, e.getNewValue());
185189
} else {
186-
valuesParameter.setValue(epochIdx*nTypes*(nTypes-1)
190+
valuesParameter.set(epochIdx*nTypes*(nTypes-1)
187191
+ (nTypes-1)*from
188192
+ (toType<from ? toType : toType-1), e.getNewValue());
189193
}

src/main/java/bdmmprime/beauti/SkylineVectorInputEditor.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import beast.base.core.Input;
2323
import beast.base.inference.parameter.RealParameter;
2424
import beast.base.math.matrixalgebra.Vector;
25+
import beast.base.spec.domain.Real;
26+
import beast.base.spec.inference.parameter.RealVectorParam;
2527
import beastfx.app.inputeditor.BeautiDoc;
2628
import beastfx.app.inputeditor.InputEditor;
2729
import javafx.beans.binding.Bindings;
@@ -67,8 +69,9 @@ void ensureValuesConsistency() {
6769
int nTypes = skylineParameter.typeSetInput.get().getNTypes();
6870
int nEpochs = skylineParameter.changeTimesInput.get() == null
6971
? 1
70-
: skylineParameter.changeTimesInput.get().getDimension() + 1;
71-
RealParameter valuesParam = (RealParameter) skylineParameter.skylineValuesInput.get();
72+
: skylineParameter.changeTimesInput.get().size() + 1;
73+
RealVectorParam<? extends Real> valuesParam =
74+
(RealVectorParam<? extends Real>) skylineParameter.skylineValuesInput.get();
7275

7376
// System.out.println("Number of epochs: " + nEpochs);
7477

@@ -78,7 +81,7 @@ void ensureValuesConsistency() {
7881
valuesParam.setDimension(nTypes*nEpochs);
7982

8083
if (skylineParameter.changeTimesInput.get() != null)
81-
((RealParameter)skylineParameter.changeTimesInput.get()).initAndValidate();
84+
((RealVectorParam<? extends Real>)skylineParameter.changeTimesInput.get()).initAndValidate();
8285
sanitiseRealParameter(valuesParam);
8386
skylineParameter.initAndValidate();
8487
}
@@ -91,7 +94,8 @@ void updateValuesUI() {
9194
int nChanges = skylineVector.getChangeCount();
9295
int nTypes = skylineVector.getNTypes();
9396

94-
RealParameter valuesParameter = (RealParameter) skylineVector.skylineValuesInput.get();
97+
RealVectorParam<? extends Real> valuesParameter =
98+
(RealVectorParam<? extends Real>) skylineVector.skylineValuesInput.get();
9599
TableColumn<ValuesTableEntry, String> typeCol = new TableColumn<>("Type");
96100
typeCol.setCellValueFactory(p -> new ObservableValueBase<>() {
97101
@Override
@@ -111,25 +115,25 @@ public String getValue() {
111115
public Double getValue() {
112116
int type = ((VectorValuesEntry)p.getValue()).type;
113117
return type<0
114-
? valuesParameter.getValue(epochIdx)
115-
: valuesParameter.getValue(epochIdx*nTypes + type);
118+
? valuesParameter.get(epochIdx)
119+
: valuesParameter.get(epochIdx*nTypes + type);
116120
}
117121
});
118122
col.setCellFactory(TextFieldTableCell.forTableColumn(new DoubleStringConverter()));
119123
col.setOnEditCommit(e -> {
120124
int type = ((VectorValuesEntry) e.getTableView()
121125
.getItems().get(e.getTablePosition().getRow())).type;
122126
if (type < 0) {
123-
valuesParameter.setValue(epochIdx, e.getNewValue());
127+
valuesParameter.set(epochIdx, e.getNewValue());
124128
} else {
125-
valuesParameter.setValue(epochIdx*nTypes + type, e.getNewValue());
129+
valuesParameter.set(epochIdx*nTypes + type, e.getNewValue());
126130
}
127131
sanitiseRealParameter(valuesParameter);
128132
});
129133
valuesTable.getColumns().add(col);
130134
}
131135

132-
if (valuesParameter.getDimension() / (nChanges+1) > 1) {
136+
if (valuesParameter.size() / (nChanges+1) > 1) {
133137
for (int type=0; type<nTypes; type++)
134138
valuesTable.getItems().add(new VectorValuesEntry(type));
135139
} else {

src/main/java/bdmmprime/beauti/TimedParameterInputEditor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ void ensureValuesConsistency(boolean scalar) {
315315
int nTypes = timedParameter.typeSetInput.get().getNTypes();
316316
int nEpochs = timedParameter.timesInput.get() == null
317317
? 0
318-
: timedParameter.timesInput.get().getDimension();
318+
: timedParameter.timesInput.get().size();
319319

320320
// System.out.println("Number of epochs: " + nEpochs);
321321

0 commit comments

Comments
 (0)