Plots refactoring

This commit is contained in:
Alexander Nozik 2016-09-04 19:40:36 +03:00
parent 2cfe2e45e3
commit 4550c9bf57
11 changed files with 79 additions and 54 deletions

View File

@ -12,7 +12,7 @@ dependencies {
compile group: 'commons-io', name: 'commons-io', version: '2.+' compile group: 'commons-io', name: 'commons-io', version: '2.+'
compile project(':dataforge-stat:dataforge-minuit') compile project(':dataforge-stat:dataforge-minuit')
compile project(':dataforge-fx') compile project(':dataforge-fx')
compile project(':dataforge-plots') compile project(':dataforge-plots:plots-jfc')
compile project(':numass-storage') compile project(':numass-storage')
compile project(':dataforge-grind') compile project(':dataforge-grind')
} }

View File

@ -8,7 +8,11 @@ import hep.dataforge.workspace.Workspace
* Created by darksnake on 29-Aug-16. * Created by darksnake on 29-Aug-16.
*/ */
GrindShell shell = new GrindShell() new GrindShell().start {
Workspace numass = new GrindLauncher().withSpec(NumassWorkspaceSpec).from(new File("D:\\Work\\Numass\\sterile2016\\workspace.groovy")).buildWorkspace() Workspace numass = new GrindLauncher()
shell.bind("numass", numass) .withSpec(NumassWorkspaceSpec)
shell.start() .from(new File("D:\\Work\\Numass\\sterile2016\\workspace.groovy"))
.buildWorkspace()
setContext(numass.getContext())
bind("numass", numass)
}

View File

@ -23,6 +23,9 @@ import hep.dataforge.maths.MathPlugin;
import hep.dataforge.meta.Meta; import hep.dataforge.meta.Meta;
import hep.dataforge.plotfit.PlotFitResultAction; import hep.dataforge.plotfit.PlotFitResultAction;
import hep.dataforge.plots.PlotDataAction; import hep.dataforge.plots.PlotDataAction;
import hep.dataforge.plots.fx.FXPlotUtils;
import hep.dataforge.plots.fx.PlotContainer;
import hep.dataforge.plots.jfreechart.JFreeChartFrame;
import hep.dataforge.stat.fit.FitManager; import hep.dataforge.stat.fit.FitManager;
import hep.dataforge.stat.fit.FitPlugin; import hep.dataforge.stat.fit.FitPlugin;
import hep.dataforge.stat.models.ModelManager; import hep.dataforge.stat.models.ModelManager;
@ -41,10 +44,31 @@ import org.apache.commons.math3.util.FastMath;
* @author Alexander Nozik * @author Alexander Nozik
*/ */
@PluginDef(group = "inr.numass", name = "numass", @PluginDef(group = "inr.numass", name = "numass",
dependsOn = {"hep.dataforge:actions", "hep.dataforge:math", "hep.dataforge:MINUIT", "hep.dataforge:plots"}, dependsOn = {"hep.dataforge:actions", "hep.dataforge:math", "hep.dataforge:MINUIT", "hep.dataforge:plots-jfc"},
description = "Numass data analysis tools") description = "Numass data analysis tools")
public class NumassPlugin extends BasicPlugin { public class NumassPlugin extends BasicPlugin {
/**
* Display a JFreeChart plot frame in a separate stage window
*
* @param title
* @param width
* @param height
* @return
*/
public static JFreeChartFrame displayJFreeChart(String title, double width, double height, Meta meta) {
PlotContainer container = FXPlotUtils.displayContainer(title, width, height);
JFreeChartFrame frame = new JFreeChartFrame(meta);
frame.configureValue("title", title);
container.setPlot(frame);
return frame;
}
public static JFreeChartFrame displayJFreeChart(String title, Meta meta) {
return displayJFreeChart(title, 800, 600, meta);
}
@Override @Override
public void attach(Context context) { public void attach(Context context) {
// StorageManager.buildFrom(context); // StorageManager.buildFrom(context);

View File

@ -30,9 +30,22 @@ import hep.dataforge.meta.MetaBuilder;
import hep.dataforge.plots.PlotFrame; import hep.dataforge.plots.PlotFrame;
import hep.dataforge.plots.PlotHolder; import hep.dataforge.plots.PlotHolder;
import hep.dataforge.plots.PlotsPlugin; import hep.dataforge.plots.PlotsPlugin;
import hep.dataforge.utils.ContextMetaFactory;
import hep.dataforge.values.Value; import hep.dataforge.values.Value;
import inr.numass.NumassIO; import inr.numass.NumassIO;
import inr.numass.NumassProperties; import inr.numass.NumassProperties;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.*;
import javafx.stage.FileChooser;
import org.controlsfx.control.StatusBar;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
@ -43,23 +56,6 @@ import java.util.Map;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Accordion;
import javafx.scene.control.Alert;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TitledPane;
import javafx.scene.control.ToggleButton;
import javafx.stage.FileChooser;
import org.controlsfx.control.StatusBar;
import hep.dataforge.utils.ContextMetaFactory;
/** /**
* FXML Controller class * FXML Controller class
@ -165,7 +161,7 @@ public class NumassWorkbenchController implements Initializable, StagePaneHolder
this.context = this.contextFactory.build(parentContext, config); this.context = this.contextFactory.build(parentContext, config);
// attachig visual process manager // attachig visual process manager
processWindow.setManager(context.workManager()); processWindow.setManager(context.taskManager());
// setting io manager // setting io manager
context.setIO(new WorkbenchIOManager(new NumassIO(), this)); context.setIO(new WorkbenchIOManager(new NumassIO(), this));
@ -340,7 +336,7 @@ public class NumassWorkbenchController implements Initializable, StagePaneHolder
runActions(); runActions();
} }
} else { } else {
this.context.workManager().shutdown(); this.context.taskManager().shutdown();
} }
} }

View File

@ -7,8 +7,6 @@ package inr.numass.workbench;
import hep.dataforge.context.GlobalContext; import hep.dataforge.context.GlobalContext;
import inr.numass.Numass; import inr.numass.Numass;
import java.io.IOException;
import java.text.ParseException;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
@ -16,12 +14,22 @@ import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
import java.io.IOException;
import java.text.ParseException;
/** /**
* *
* @author Alexander Nozik * @author Alexander Nozik
*/ */
public class Workbench extends Application { public class Workbench extends Application {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
@Override @Override
public void start(Stage primaryStage) throws IOException, ParseException { public void start(Stage primaryStage) throws IOException, ParseException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/NumassWorkbench.fxml")); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/NumassWorkbench.fxml"));
@ -38,7 +46,7 @@ public class Workbench extends Application {
scene.getWindow().setOnCloseRequest((WindowEvent event) -> { scene.getWindow().setOnCloseRequest((WindowEvent event) -> {
try { try {
controller.getContext().workManager().getRoot().cancel(true); controller.getContext().taskManager().getRoot().cancel(true);
} catch (Exception e) { } catch (Exception e) {
} }
@ -51,11 +59,4 @@ public class Workbench extends Application {
super.stop(); super.stop();
} }
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
} }

View File

@ -16,7 +16,7 @@
package inr.numass.models; package inr.numass.models;
import hep.dataforge.stat.fit.ParamSet; import hep.dataforge.stat.fit.ParamSet;
import hep.dataforge.plots.fx.FXPlotUtils; import inr.numass.NumassPlugin;
/** /**
* *
@ -36,6 +36,6 @@ public class PlotScatter {
+ "'ionW' = 11.33 ± 0.43\n" + "'ionW' = 11.33 ± 0.43\n"
+ "'exIonRatio' = 4.83 ± 0.36" + "'exIonRatio' = 4.83 ± 0.36"
); );
LossCalculator.plotScatter(FXPlotUtils.displayJFreeChart("Loss function", null),pars); LossCalculator.plotScatter(NumassPlugin.displayJFreeChart("Loss function", null), pars);
} }
} }

View File

@ -18,7 +18,7 @@ package inr.numass.models;
import hep.dataforge.maths.integration.GaussRuleIntegrator; import hep.dataforge.maths.integration.GaussRuleIntegrator;
import hep.dataforge.plots.PlotFrame; import hep.dataforge.plots.PlotFrame;
import hep.dataforge.plots.data.PlottableXYFunction; import hep.dataforge.plots.data.PlottableXYFunction;
import hep.dataforge.plots.fx.FXPlotUtils; import inr.numass.NumassPlugin;
import org.apache.commons.math3.analysis.UnivariateFunction; import org.apache.commons.math3.analysis.UnivariateFunction;
/** /**
@ -31,7 +31,7 @@ public class TestNeLossParametrisation {
* @param args the command line arguments * @param args the command line arguments
*/ */
public static void main(String[] args) { public static void main(String[] args) {
PlotFrame frame = FXPlotUtils.displayJFreeChart("Loss parametrisation test", null); PlotFrame frame = NumassPlugin.displayJFreeChart("Loss parametrisation test", null);
//JFreeChartFrame.drawFrame("Loss parametrisation test", null); //JFreeChartFrame.drawFrame("Loss parametrisation test", null);
UnivariateFunction oldFunction = LossCalculator.getSingleScatterFunction(); UnivariateFunction oldFunction = LossCalculator.getSingleScatterFunction();
UnivariateFunction newFunction = getSingleScatterFunction(12.86, 16.78, 1.65, 12.38, 4.79); UnivariateFunction newFunction = getSingleScatterFunction(12.86, 16.78, 1.65, 12.38, 4.79);

View File

@ -18,8 +18,8 @@ package inr.numass.models;
import hep.dataforge.context.GlobalContext; import hep.dataforge.context.GlobalContext;
import hep.dataforge.plots.data.PlottableData; import hep.dataforge.plots.data.PlottableData;
import hep.dataforge.plots.data.PlottableXYFunction; import hep.dataforge.plots.data.PlottableXYFunction;
import hep.dataforge.plots.fx.FXPlotUtils;
import hep.dataforge.plots.jfreechart.JFreeChartFrame; import hep.dataforge.plots.jfreechart.JFreeChartFrame;
import inr.numass.NumassPlugin;
/** /**
* *
@ -28,7 +28,7 @@ import hep.dataforge.plots.jfreechart.JFreeChartFrame;
public class TransmissionInterpolatorTest { public class TransmissionInterpolatorTest {
public static void main(String[] args) { public static void main(String[] args) {
JFreeChartFrame frame = FXPlotUtils.displayJFreeChart("TransmissionInterpolatorTest", null); JFreeChartFrame frame = NumassPlugin.displayJFreeChart("TransmissionInterpolatorTest", null);
//JFreeChartFrame.drawFrame("TransmissionInterpolatorTest", null); //JFreeChartFrame.drawFrame("TransmissionInterpolatorTest", null);
TransmissionInterpolator interpolator = TransmissionInterpolator.fromFile(GlobalContext.instance(), TransmissionInterpolator interpolator = TransmissionInterpolator.fromFile(GlobalContext.instance(),
"d:\\sterile-new\\loss2014-11\\.dataforge\\merge\\empty_sum.onComplete", "Uset", "CR", 15, 0.8, 19002d); "d:\\sterile-new\\loss2014-11\\.dataforge\\merge\\empty_sum.onComplete", "Uset", "CR", 15, 0.8, 19002d);

View File

@ -129,7 +129,7 @@ public class MainViewerController implements Initializable {
} }
private void loadDirectory(String path) { private void loadDirectory(String path) {
getContext().workManager().submit("viewer.loadDirectory", (ProgressCallback callback) -> { getContext().taskManager().submit("viewer.loadDirectory", (ProgressCallback callback) -> {
callback.updateTitle("Load storage (" + path + ")"); callback.updateTitle("Load storage (" + path + ")");
callback.setProgress(-1); callback.setProgress(-1);
callback.updateMessage("Building numass storage tree..."); callback.updateMessage("Building numass storage tree...");
@ -151,8 +151,8 @@ public class MainViewerController implements Initializable {
public void setRootStorage(NumassStorage root) { public void setRootStorage(NumassStorage root) {
getContext().workManager().cleanup(); getContext().taskManager().cleanup();
getContext().workManager().submit("viewer.storage.load", (ProgressCallback callback) -> { getContext().taskManager().submit("viewer.storage.load", (ProgressCallback callback) -> {
callback.updateTitle("Fill data to UI (" + root.getName() + ")"); callback.updateTitle("Fill data to UI (" + root.getName() + ")");
callback.setProgress(-1); callback.setProgress(-1);
Platform.runLater(() -> statusBar.setProgress(-1)); Platform.runLater(() -> statusBar.setProgress(-1));

View File

@ -87,7 +87,7 @@ public class MspViewController {
public void fillMspData(Storage rootStorage) { public void fillMspData(Storage rootStorage) {
if (rootStorage != null) { if (rootStorage != null) {
context.workManager().submit("viewer.msp.fill", (ProgressCallback callback) -> { context.taskManager().submit("viewer.msp.fill", (ProgressCallback callback) -> {
try { try {
// callback.updateTitle("Fill msp data (" + rootStorage.getName() + ")"); // callback.updateTitle("Fill msp data (" + rootStorage.getName() + ")");

View File

@ -214,7 +214,7 @@ public class NumassLoaderViewComponent extends AnchorPane implements Initializab
public void loadData(NumassData data) { public void loadData(NumassData data) {
this.data = data; this.data = data;
if (data != null) { if (data != null) {
context.workManager().<List<NMPoint>>submit("viewer.numass.load", (ProgressCallback callback) -> { context.taskManager().<List<NMPoint>>submit("viewer.numass.load", (ProgressCallback callback) -> {
callback.updateTitle("Load numass data (" + data.getName() + ")"); callback.updateTitle("Load numass data (" + data.getName() + ")");
points = data.getNMPoints(); points = data.getNMPoints();
@ -239,7 +239,7 @@ public class NumassLoaderViewComponent extends AnchorPane implements Initializab
} }
private void setupHVPane(Supplier<Table> hvData) { private void setupHVPane(Supplier<Table> hvData) {
context.workManager().submit("viewer.numass.hv", (ProgressCallback callback) -> { context.taskManager().submit("viewer.numass.hv", (ProgressCallback callback) -> {
Table t = hvData.get(); Table t = hvData.get();
Platform.runLater(() -> { Platform.runLater(() -> {
if (t != null) { if (t != null) {
@ -343,7 +343,7 @@ public class NumassLoaderViewComponent extends AnchorPane implements Initializab
detectorPlot.removePlot(); detectorPlot.removePlot();
} }
context.workManager().submit("viewer.numass.load.detector", (ProgressCallback callback) -> { context.taskManager().submit("viewer.numass.load.detector", (ProgressCallback callback) -> {
Meta plottableConfig = new MetaBuilder("plot") Meta plottableConfig = new MetaBuilder("plot")
.setValue("connectionType", "step") .setValue("connectionType", "step")
.setValue("thickness", 2) .setValue("thickness", 2)