Skip to content

Commit

Permalink
#9 add frequency option
Browse files Browse the repository at this point in the history
  • Loading branch information
markhalonen committed Aug 21, 2018
1 parent cf31a5d commit d3121c6
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 2 deletions.
10 changes: 10 additions & 0 deletions Libraries/src/net/relinc/libraries/data/DataSubset.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ public void reduceDataNonReversible(int pointsToKeep) {

}

public void reduceDataNonReversibleByFrequency(double frequency) {
double reductionFactor = this.getFrequency() / frequency;
int pointsToKeep = this.Data.data.length / (int)reductionFactor;
reduceDataNonReversible(pointsToKeep);
}

public enum baseDataType{
LOAD, DISPLACEMENT, TIME;
}
Expand Down Expand Up @@ -203,5 +209,9 @@ public double[] getTrimmedData(){
public String toString() {
return name;
}

public double getFrequency() {
return 1.0 / (this.Data.timeData[1] - this.Data.timeData[0]);
}

}
86 changes: 86 additions & 0 deletions Viewer/src/net/relinc/viewer/GUI/DataReducerDialog.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package net.relinc.viewer.GUI;

import java.util.HashMap;
import java.util.Map;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class DataReducerDialog {
static Map<String, Number> showDataReducerDialog() {
Stage stage = new Stage();
Label label = new Label("Reduce Data");
TextField tf = new TextField();
tf.setPromptText("Points To Keep");
Button button = new Button("Done");
button.setDefaultButton(true);
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
stage.close();
}
});
VBox box = new VBox();

box.getChildren().add(label);
RadioButton pointsToKeepMode = new RadioButton("Points To Keep");
pointsToKeepMode.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if(newValue) {
tf.setPromptText("Points To Keep");
} else {
tf.setPromptText("Data Collection Frequency");
}
}
});
pointsToKeepMode.setSelected(true);
RadioButton frequencyMode = new RadioButton("Frequency");
ToggleGroup group = new ToggleGroup();
pointsToKeepMode.setToggleGroup(group);
frequencyMode.setToggleGroup(group);

HBox hBox = new HBox();
hBox.getChildren().add(pointsToKeepMode);
hBox.getChildren().add(frequencyMode);
hBox.setAlignment(Pos.CENTER);
hBox.setSpacing(5);
box.getChildren().add(hBox);
box.getChildren().add(tf);
box.getChildren().add(button);
box.setSpacing(15);
box.setAlignment(Pos.CENTER);
box.setPadding(new Insets(10.0));
AnchorPane anchor = new AnchorPane();
AnchorPane.setBottomAnchor(box, 0.0);
AnchorPane.setTopAnchor(box, 0.0);
AnchorPane.setLeftAnchor(box, 0.0);
AnchorPane.setRightAnchor(box, 0.0);
anchor.getChildren().add(box);
Scene scene = new Scene(anchor, 400, 220);

stage.setScene(scene);
stage.showAndWait();
Map<String, Number> ret = new HashMap<String, Number>();
if(pointsToKeepMode.isSelected()) {
ret.put("pointsToKeep", Integer.parseInt(tf.getText().replaceAll(",", "")));
} else {
ret.put("frequency", Double.parseDouble(tf.getText().replaceAll(",", "")));
}
return ret;
}
}
12 changes: 10 additions & 2 deletions Viewer/src/net/relinc/viewer/GUI/HomeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import javax.imageio.ImageIO;
import org.controlsfx.control.CheckListView;
import org.controlsfx.control.PopOver;
Expand Down Expand Up @@ -724,11 +726,17 @@ public void selectCustomRangeButtonFired(){

@FXML
public void reduceDataSizeButtonFired() {
int pointsToKeep = Dialogs.getIntValueFromUser("Points To Keep", "# of points");
Map<String, Number> reduceParams = DataReducerDialog.showDataReducerDialog();
getCheckedSamples().stream().forEach(sample -> {
sample.DataFiles.stream().forEach(df -> {
df.dataSubsets.stream().forEach(subset -> {
subset.reduceDataNonReversible(pointsToKeep);
if(reduceParams.containsKey("pointsToKeep"))
{
subset.reduceDataNonReversible(reduceParams.get("pointsToKeep").intValue());
} else {
subset.reduceDataNonReversibleByFrequency(reduceParams.get("frequency").doubleValue());
}

});
});
});
Expand Down

0 comments on commit d3121c6

Please sign in to comment.