diff --git a/numass-client/src/main/java/inr/numass/client/NumassClient.java b/numass-client/src/main/java/inr/numass/client/NumassClient.java index e34aea29..7811f48a 100644 --- a/numass-client/src/main/java/inr/numass/client/NumassClient.java +++ b/numass-client/src/main/java/inr/numass/client/NumassClient.java @@ -135,7 +135,7 @@ public class NumassClient implements AutoCloseable, Responder { .setMetaValue("action", "push") .setMetaValue("path", path) .setMetaValue("name", zipName) - .setData(buffer) + .data(buffer) .build(); return respond(bin).getMeta(); diff --git a/numass-main/src/main/kotlin/inr/numass/NumassUtils.kt b/numass-main/src/main/kotlin/inr/numass/NumassUtils.kt index bc37b77f..29263c8b 100644 --- a/numass-main/src/main/kotlin/inr/numass/NumassUtils.kt +++ b/numass-main/src/main/kotlin/inr/numass/NumassUtils.kt @@ -89,7 +89,7 @@ object NumassUtils { } fun wrap(obj: T, meta: Meta = Meta.empty(), serializer: OutputStream.(T) -> Unit): EnvelopeBuilder { - return EnvelopeBuilder().setMeta(meta).setData { serializer.invoke(it, obj) } + return EnvelopeBuilder().meta(meta).data { serializer.invoke(it, obj) } } fun wrap(obj: Any, meta: Meta = Meta.empty()): EnvelopeBuilder { @@ -110,8 +110,8 @@ object NumassUtils { TaglessEnvelopeType.INSTANCE.writer.write( stream, EnvelopeBuilder() - .setMeta(meta) - .setData(dataWriter) + .meta(meta) + .data(dataWriter) .build() ) stream.flush() diff --git a/numass-main/src/main/kotlin/inr/numass/tasks/NumassTasks.kt b/numass-main/src/main/kotlin/inr/numass/tasks/NumassTasks.kt index 276bbb0a..a6fb4e32 100644 --- a/numass-main/src/main/kotlin/inr/numass/tasks/NumassTasks.kt +++ b/numass-main/src/main/kotlin/inr/numass/tasks/NumassTasks.kt @@ -29,6 +29,7 @@ import inr.numass.actions.MergeDataAction import inr.numass.actions.MergeDataAction.MERGE_NAME import inr.numass.actions.TransformDataAction import inr.numass.addSetMarkers +import inr.numass.data.analyzers.NumassAnalyzer import inr.numass.data.analyzers.NumassAnalyzer.Companion.CHANNEL_KEY import inr.numass.data.analyzers.NumassAnalyzer.Companion.COUNT_KEY import inr.numass.data.analyzers.SmartAnalyzer @@ -275,7 +276,8 @@ val plotFitTask = task("plotFit") { val histogramTask = task("histogram") { descriptor { value("plot", types = listOf(ValueType.BOOLEAN), defaultValue = false, info = "Show plot of the spectra") - value("points", multiple = true, types = listOf(ValueType.NUMBER), info = " The list of point voltages to build histogram") + value("points", multiple = true, types = listOf(ValueType.NUMBER), info = "The list of point voltages to build histogram") + value("binning", types = listOf(ValueType.NUMBER), info = "The binning of resulting histogram") info = "Combine amplitude spectra from multiple sets, but with the same U" } model { meta -> @@ -319,7 +321,7 @@ val histogramTask = task("histogram") { val table = buildTable(format) { aggregator.forEach { channel, counters -> val values: MutableMap = HashMap() - values["channel"] = channel + values[NumassAnalyzer.CHANNEL_KEY] = channel counters.forEach { u, counter -> values["U$u"] = counter.get() } format.names.forEach { values.putIfAbsent(it, 0) @@ -327,9 +329,16 @@ val histogramTask = task("histogram") { row(values) } } - //TODO increase binning - context.output.render(table, stage = "numass.histogram", name = name, meta = meta) + //apply binning + val processedTable: Table = if(meta.hasValue("binning")){ + table.sumByStep(NumassAnalyzer.CHANNEL_KEY, meta.getDouble("binning")) + } else{ + table + } + + // send raw table to the output + context.output.render(processedTable, stage = "numass.histogram", name = name, meta = meta) if (meta.getBoolean("plot", false)) { context.plot("$name.plot", stage = "numass.histogram") { @@ -340,13 +349,13 @@ val histogramTask = task("histogram") { "showLine" to true "connectionType" to "step" } - table.format.names.filter { it != "channel" }.forEach { - +DataPlot.plot(it, table, adapter = Adapters.buildXYAdapter("channel", it)) + processedTable.format.names.filter { it != "channel" }.forEach { + +DataPlot.plot(it, processedTable, adapter = Adapters.buildXYAdapter("channel", it)) } } } - return@join table + return@join processedTable } }