A lot of minor fixes in numass

This commit is contained in:
Alexander Nozik 2019-02-08 20:58:08 +03:00
parent 12114ffab3
commit b25c1dd0eb
6 changed files with 49 additions and 24 deletions

View File

@ -35,11 +35,11 @@ class NumassDataFactory : DataFactory<NumassSet>(NumassSet::class.java) {
override fun fill(builder: DataNodeEditor<NumassSet>, context: Context, meta: Meta) { override fun fill(builder: DataNodeEditor<NumassSet>, context: Context, meta: Meta) {
runBlocking { runBlocking {
val storage = NumassDirectory.read(context,meta.getString("path")) as Storage val storage = NumassDirectory.read(context, meta.getString("path")) as Storage
storage.sequence().forEach { pair -> storage.sequence().forEach { pair ->
val value = pair.second val value = pair.second
if (value is NumassSet) { if (value is NumassSet) {
builder.putStatic(pair.first.unescaped, value) builder.putStatic(pair.first.unescaped, value, value.meta)
} }
} }
} }

View File

@ -45,12 +45,11 @@ object MergeDataAction : ManyToOneAction<Table, Table>("numass.merge", Table::cl
override fun buildGroups(context: Context, input: DataNode<Table>, actionMeta: Meta): List<DataNode<Table>> { override fun buildGroups(context: Context, input: DataNode<Table>, actionMeta: Meta): List<DataNode<Table>> {
val meta = inputMeta(context, input.meta, actionMeta) val meta = inputMeta(context, input.meta, actionMeta)
val groups: List<DataNode<Table>> = if (meta.hasValue("grouping.byValue")) { return if (meta.hasValue("grouping.byValue")) {
super.buildGroups(context, input, actionMeta) super.buildGroups(context, input, actionMeta)
} else { } else {
GroupBuilder.byValue(MERGE_NAME, meta.getString(MERGE_NAME, input.name)).group(input) GroupBuilder.byValue(MERGE_NAME, meta.getString(MERGE_NAME, input.name)).group(input)
} }
return groups
} }
override fun execute(context: Context, nodeName: String, data: Map<String, Table>, meta: Laminate): Table { override fun execute(context: Context, nodeName: String, data: Map<String, Table>, meta: Laminate): Table {

View File

@ -23,7 +23,7 @@ fun main(args: Array<String>) {
} }
//val rootDir = File("D:\\Work\\Numass\\data\\2017_05\\Fill_2") //val rootDir = File("D:\\Work\\Numass\\data\\2017_05\\Fill_2")
val storage = NumassDirectory.read(context, "Fill_3_events") ?: error("Storage not found") val storage = NumassDirectory.read(context, "Fill_3") ?: error("Storage not found")
val analyzer = SmartAnalyzer() val analyzer = SmartAnalyzer()
@ -34,7 +34,7 @@ fun main(args: Array<String>) {
// "window.up" to 1600 // "window.up" to 1600
} }
val set = storage.provide("set_58", NumassSet::class.java).nullable ?: error("Set does not exist") val set = storage.provide("set_4", NumassSet::class.java).nullable ?: error("Set does not exist")
val frame = displayChart("slices").apply { val frame = displayChart("slices").apply {
plots.setType<DataPlot>() plots.setType<DataPlot>()

View File

@ -36,7 +36,7 @@ import inr.numass.data.storage.NumassDirectory
import inr.numass.displayChart import inr.numass.displayChart
import inr.numass.subthreshold.Threshold import inr.numass.subthreshold.Threshold
fun main(args: Array<String>) { fun main() {
val context = buildContext("NUMASS", NumassPlugin::class.java, JFreeChartPlugin::class.java) { val context = buildContext("NUMASS", NumassPlugin::class.java, JFreeChartPlugin::class.java) {
rootDir = "D:\\Work\\Numass\\sterile\\2017_05_frames" rootDir = "D:\\Work\\Numass\\sterile\\2017_05_frames"
dataDir = "D:\\Work\\Numass\\data\\2017_05_frames" dataDir = "D:\\Work\\Numass\\data\\2017_05_frames"
@ -54,7 +54,7 @@ fun main(args: Array<String>) {
"xLow" to 1000 "xLow" to 1000
"xHigh" to 1300 "xHigh" to 1300
"upper" to 6000 "upper" to 6000
"binning" to 20 "binning" to 32
//"reference" to 18600 //"reference" to 18600
} }

View File

@ -35,19 +35,24 @@ import inr.numass.subthreshold.Threshold
fun main(args: Array<String>) { fun main(args: Array<String>) {
val context = buildContext("NUMASS", NumassPlugin::class.java, JFreeChartPlugin::class.java) { val context = buildContext("NUMASS", NumassPlugin::class.java, JFreeChartPlugin::class.java) {
rootDir = "D:\\Work\\Numass\\sterile\\2017_05" rootDir = "D:\\Work\\Numass\\sterile\\2017_05_frames"
dataDir = "D:\\Work\\Numass\\data\\2017_05" dataDir = "D:\\Work\\Numass\\data\\2017_05_frames"
output = FXOutputManager() + DirectoryOutput() output = FXOutputManager() + DirectoryOutput()
} }
val storage = NumassDirectory.read(context, "Fill_2") as? FileStorage ?: error("Storage not found") val storage = NumassDirectory.read(context, "Fill_3") as? FileStorage ?: error("Storage not found")
val meta = buildMeta { val meta = buildMeta {
"delta" to -200 "delta" to -300
"method" to "pow" "method" to "pow"
"t0" to 15e3 "t0" to 15e3
"window.lo" to 400 // "window.lo" to 400
"window.up" to 1600 // "window.up" to 1600
"xLow" to 1000
"xHigh" to 1300
"upper" to 6000
"binning" to 32
//"reference" to 18600
} }
val frame = displayChart("correction").apply { val frame = displayChart("correction").apply {

View File

@ -1,10 +1,7 @@
package inr.numass.tasks package inr.numass.tasks
import hep.dataforge.configure import hep.dataforge.configure
import hep.dataforge.data.CustomDataFilter import hep.dataforge.data.*
import hep.dataforge.data.DataSet
import hep.dataforge.data.DataTree
import hep.dataforge.data.DataUtils
import hep.dataforge.io.output.stream import hep.dataforge.io.output.stream
import hep.dataforge.io.render import hep.dataforge.io.render
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
@ -22,6 +19,7 @@ import hep.dataforge.stat.fit.FitResult
import hep.dataforge.stat.models.XYModel import hep.dataforge.stat.models.XYModel
import hep.dataforge.tables.* import hep.dataforge.tables.*
import hep.dataforge.useMeta import hep.dataforge.useMeta
import hep.dataforge.useValue
import hep.dataforge.values.ValueType import hep.dataforge.values.ValueType
import hep.dataforge.values.Values import hep.dataforge.values.Values
import hep.dataforge.values.asValue import hep.dataforge.values.asValue
@ -50,10 +48,17 @@ import java.util.stream.StreamSupport
import kotlin.collections.HashMap import kotlin.collections.HashMap
import kotlin.collections.set import kotlin.collections.set
private val filterForward = DataFilter.byMetaValue("iteration_info.reverse") {
!(it?.boolean ?: false)
}
private val filterReverse = DataFilter.byMetaValue("iteration_info.reverse") {
it?.boolean ?: false
}
val selectTask = task("select") { val selectTask = task("select") {
descriptor { descriptor {
info = "Select data from initial data pool" info = "Select data from initial data pool"
value("forward", types = listOf(ValueType.BOOLEAN), info = "Select only forward or only backward sets")
} }
model { meta -> model { meta ->
data("*") data("*")
@ -61,10 +66,19 @@ val selectTask = task("select") {
} }
transform<NumassSet> { data -> transform<NumassSet> { data ->
logger.info("Starting selection from data node with size ${data.size}") logger.info("Starting selection from data node with size ${data.size}")
CustomDataFilter(meta).filter(data.checked(NumassSet::class.java)).also { var res = data.checked(NumassSet::class.java).filter(CustomDataFilter(meta))
logger.info("Selected ${it.size} elements")
meta.useValue("forward") {
res = if (it.boolean) {
res.filter(filterForward)
} else {
res.filter(filterReverse)
} }
} }
logger.info("Selected ${res.size} elements")
res
}
} }
val analyzeTask = task("analyze") { val analyzeTask = task("analyze") {
@ -362,7 +376,15 @@ val histogramTask = task("histogram") {
}.sumByStep(NumassAnalyzer.CHANNEL_KEY, meta.getDouble("binning", 16.0)) //apply binning }.sumByStep(NumassAnalyzer.CHANNEL_KEY, meta.getDouble("binning", 16.0)) //apply binning
// send raw table to the output // send raw table to the output
context.output.render(table, stage = "numass.histogram", name = name, meta = meta) context.output.render(table, stage = "numass.histogram", name = name) {
update(meta)
data.toSortedMap().forEach { name, set ->
putNode("data", buildMeta {
"name" to name
set.meta.useMeta("iteration_info"){"iteration" to it}
})
}
}
if (meta.getBoolean("plot", false)) { if (meta.getBoolean("plot", false)) {
context.plotFrame("$name.plot", stage = "numass.histogram") { context.plotFrame("$name.plot", stage = "numass.histogram") {
@ -379,7 +401,6 @@ val histogramTask = task("histogram") {
} }
} }
return@join table return@join table
} }
} }
@ -397,8 +418,8 @@ val sliceTask = task("slice") {
val analyzer = SmartAnalyzer() val analyzer = SmartAnalyzer()
val slices = HashMap<String, IntRange>() val slices = HashMap<String, IntRange>()
val formatBuilder = TableFormatBuilder() val formatBuilder = TableFormatBuilder()
formatBuilder.addColumn("set",ValueType.STRING) formatBuilder.addColumn("set", ValueType.STRING)
formatBuilder.addColumn("time",ValueType.TIME) formatBuilder.addColumn("time", ValueType.TIME)
meta.getMetaList("range").forEach { meta.getMetaList("range").forEach {
val range = IntRange(it.getInt("from"), it.getInt("to")) val range = IntRange(it.getInt("from"), it.getInt("to"))
val name = it.getString("name", range.toString()) val name = it.getString("name", range.toString())