Fixed adapters
This commit is contained in:
parent
ad96c7a78b
commit
39368b45aa
@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.jvm" version "1.1.61" apply false
|
||||
id "org.jetbrains.kotlin.jvm" version "1.2.0" apply false
|
||||
}
|
||||
|
||||
allprojects{
|
||||
|
@ -13,6 +13,7 @@ import hep.dataforge.stat.fit.ParamSet
|
||||
import hep.dataforge.stat.models.XYModel
|
||||
import hep.dataforge.stat.parametric.ParametricFunction
|
||||
import hep.dataforge.tables.Table
|
||||
import inr.numass.NumassIOKt
|
||||
import inr.numass.NumassPlugin
|
||||
import inr.numass.data.SpectrumAdapter
|
||||
import inr.numass.data.SpectrumGenerator
|
||||
@ -78,4 +79,5 @@ new GrindShell(ctx).eval {
|
||||
|
||||
|
||||
res.printState(ctx.io.out().newPrintWriter());
|
||||
NumassIOKt.display(res, ctx, "fit")
|
||||
}
|
@ -21,9 +21,17 @@ import ch.qos.logback.classic.spi.ILoggingEvent
|
||||
import ch.qos.logback.core.Appender
|
||||
import ch.qos.logback.core.FileAppender
|
||||
import hep.dataforge.context.Context
|
||||
import hep.dataforge.fx.plots.plusAssign
|
||||
import hep.dataforge.io.BasicIOManager
|
||||
import hep.dataforge.io.IOManager
|
||||
import hep.dataforge.meta.Meta
|
||||
import hep.dataforge.names.Name
|
||||
import hep.dataforge.plots.PlotUtils
|
||||
import hep.dataforge.plots.data.DataPlot
|
||||
import hep.dataforge.plots.data.XYFunctionPlot
|
||||
import hep.dataforge.stat.fit.FitResult
|
||||
import hep.dataforge.stat.models.XYModel
|
||||
import hep.dataforge.tables.Adapters
|
||||
import hep.dataforge.utils.ReferenceRegistry
|
||||
import org.apache.commons.io.output.TeeOutputStream
|
||||
import org.slf4j.LoggerFactory
|
||||
@ -134,3 +142,40 @@ class NumassIO : BasicIOManager() {
|
||||
val NUMASS_OUTPUT_CONTEXT_KEY = "numass.outputDir"
|
||||
}
|
||||
}
|
||||
|
||||
fun FitResult.display(context: Context, stage: String = "fit") {
|
||||
val model = optModel(context).get() as XYModel
|
||||
|
||||
val adapter = model.adapter
|
||||
|
||||
val frame = PlotUtils.getPlotManager(context)
|
||||
.getPlotFrame(stage, "plot", Meta.empty())
|
||||
|
||||
val func = { x: Double -> model.spectrum.value(x, parameters) }
|
||||
|
||||
val fit = XYFunctionPlot("fit")
|
||||
fit.setDensity(100, false)
|
||||
fit.setSmoothing(true)
|
||||
fit.setFunction(func)
|
||||
// ensuring all data points are calculated explicitly
|
||||
data.rows.map { dp -> Adapters.getXValue(adapter, dp).doubleValue() }.sorted().forEach { fit.calculateIn(it) }
|
||||
|
||||
frame.add(fit)
|
||||
|
||||
frame.add(DataPlot.plot("data", adapter, data))
|
||||
|
||||
val residualsFrame = PlotUtils.getPlotManager(context)
|
||||
.getPlotFrame(stage, "residuals", Meta.empty())
|
||||
|
||||
val residual = DataPlot("residuals");
|
||||
|
||||
data.rows.forEach {
|
||||
val x = Adapters.getXValue(adapter, it).doubleValue()
|
||||
val y = Adapters.getYValue(adapter, it).doubleValue()
|
||||
val err = Adapters.optYError(adapter,it).orElse(1.0)
|
||||
residual += Adapters.buildXYDataPoint(x, (y - func(x)) / err, 1.0)
|
||||
}
|
||||
|
||||
residualsFrame.add(residual)
|
||||
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import hep.dataforge.meta.Meta
|
||||
import hep.dataforge.plots.PlotFrame
|
||||
import hep.dataforge.plots.data.DataPlot
|
||||
import hep.dataforge.plots.jfreechart.JFreeChartFrame
|
||||
import hep.dataforge.tables.Adapters
|
||||
import hep.dataforge.tables.Table
|
||||
import inr.numass.data.NumassDataUtils
|
||||
import inr.numass.data.analyzers.SimpleAnalyzer
|
||||
@ -131,7 +132,7 @@ class AmplitudeView(
|
||||
}
|
||||
DataPlot.plot(
|
||||
key,
|
||||
XYAdapter(NumassAnalyzer.CHANNEL_KEY, valueAxis),
|
||||
Adapters.buildXYAdapter(NumassAnalyzer.CHANNEL_KEY, valueAxis),
|
||||
NumassDataUtils.spectrumWithBinning(getSpectrum(point), binning)
|
||||
).configure {
|
||||
"connectionType" to "step"
|
||||
|
@ -11,6 +11,7 @@ import hep.dataforge.plots.data.DataPlot
|
||||
import hep.dataforge.plots.jfreechart.JFreeChartFrame
|
||||
import hep.dataforge.storage.api.TableLoader
|
||||
import hep.dataforge.storage.api.ValueIndex
|
||||
import hep.dataforge.tables.Adapters
|
||||
import hep.dataforge.tables.ListTable
|
||||
import hep.dataforge.tables.Table
|
||||
import hep.dataforge.values.Values
|
||||
@ -50,7 +51,7 @@ class SlowControlView : View(title = "Numass slow control view", icon = ImageVie
|
||||
val group = PlotGroup(change.key)
|
||||
|
||||
names.forEach {
|
||||
val adapter = XYAdapter("timestamp", it);
|
||||
val adapter = Adapters.buildXYAdapter("timestamp", it);
|
||||
val plot = DataPlot.plot(it, adapter, plotData).configure {
|
||||
"showLine" to true
|
||||
"showSymbol" to false
|
||||
|
@ -3,11 +3,13 @@ package inr.numass.viewer
|
||||
import hep.dataforge.fx.dfIcon
|
||||
import hep.dataforge.fx.plots.PlotContainer
|
||||
import hep.dataforge.fx.runGoal
|
||||
import hep.dataforge.fx.ui
|
||||
import hep.dataforge.kodex.configure
|
||||
import hep.dataforge.meta.Meta
|
||||
import hep.dataforge.plots.PlotFrame
|
||||
import hep.dataforge.plots.data.DataPlot
|
||||
import hep.dataforge.plots.jfreechart.JFreeChartFrame
|
||||
import hep.dataforge.tables.Adapters
|
||||
import hep.dataforge.tables.Table
|
||||
import inr.numass.data.analyzers.SimpleAnalyzer
|
||||
import inr.numass.data.api.NumassAnalyzer
|
||||
@ -175,7 +177,7 @@ class SpectrumView(
|
||||
runLater {
|
||||
container.progress = progress.incrementAndGet().toDouble() / totalProgress
|
||||
}
|
||||
XYAdapter.DEFAULT_ADAPTER.buildXYDataPoint(
|
||||
Adapters.buildXYDataPoint(
|
||||
point.voltage,
|
||||
(count / seconds),
|
||||
Math.sqrt(count.toDouble()) / seconds
|
||||
|
@ -3,7 +3,7 @@ package inr.numass.viewer.test
|
||||
import hep.dataforge.fx.plots.PlotContainer
|
||||
import hep.dataforge.plots.data.DataPlot
|
||||
import hep.dataforge.plots.jfreechart.JFreeChartFrame
|
||||
import hep.dataforge.tables.ValueMap
|
||||
import hep.dataforge.tables.Adapters
|
||||
import tornadofx.*
|
||||
import java.util.*
|
||||
|
||||
@ -20,7 +20,7 @@ class JFCTest : View("My View") {
|
||||
action {
|
||||
|
||||
data.fillData(
|
||||
(1..1000).map { ValueMap.of(arrayOf(XYAdapter.X_VALUE_KEY, XYAdapter.Y_VALUE_KEY), it, rnd.nextDouble()) }
|
||||
(1..1000).map { Adapters.buildXYDataPoint(it.toDouble(), rnd.nextDouble()) }
|
||||
)
|
||||
plot.add(data)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user