From d1ddf89c6e17f35aa31ae349c87c9fd4aeaabe7c Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Sat, 18 Dec 2021 23:08:03 +0300 Subject: [PATCH] Fix jupyter and analyzers Fix jupyter and analyzers --- {numass-workspace => notebooks}/numass.json | 0 numass-analysis/build.gradle.kts | 8 +- .../mass/data/analysis/AbstractAnalyzer.kt | 112 ----- .../inr/mass/data/analysis/DebunchAnalyzer.kt | 35 -- .../data/analysis/NumassAmplitudeSpectrum.kt | 70 +++ .../inr/mass/data/analysis/NumassAnalyzer.kt | 368 ++++++++------- .../data/analysis/NumassAnalyzerParameters.kt | 46 ++ .../data/analysis/NumassEventExtractor.kt | 22 + .../inr/mass/data/analysis/NumassGenerator.kt | 3 +- .../inr/mass/data/analysis/SimpleAnalyzer.kt | 37 +- .../inr/mass/data/analysis/SmartAnalyzer.kt | 104 ----- .../ru/inr/mass/data/analysis/TimeAnalyzer.kt | 441 +++++++----------- .../ru/inr/mass/data/analysis/Values.kt | 5 - .../inr/mass/data/analysis/timeHistogram.kt | 37 ++ .../mass/data/proto/TestNumassDirectory.kt | 9 +- .../src/test/resources/testData/tqdc/meta | Bin 0 -> 4147 bytes .../src/test/resources/testData/tqdc/p0.df | Bin 6806 -> 0 bytes .../testData/tqdc/p1(30s)(HV1=18600) | Bin 0 -> 79581 bytes .../src/test/resources/testData/tqdc/p1.df | Bin 5701 -> 0 bytes .../testData/tqdc/p2(30s)(HV1=18550) | Bin 0 -> 62856 bytes .../src/test/resources/testData/tqdc/p2.df | Bin 6041 -> 0 bytes .../testData/tqdc/p3(30s)(HV1=18500) | Bin 0 -> 42808 bytes .../src/test/resources/testData/tqdc/p3.df | Bin 6551 -> 0 bytes .../testData/tqdc/p4(30s)(HV1=18450) | Bin 0 -> 48930 bytes .../src/test/resources/testData/tqdc/p4.df | Bin 7061 -> 0 bytes .../testData/tqdc/p5(30s)(HV1=18400) | Bin 0 -> 11504 bytes .../src/test/resources/testData/tqdc/p5.df | Bin 5292 -> 0 bytes .../testData/tqdc/p6(30s)(HV1=18350) | Bin 0 -> 78779 bytes .../src/test/resources/testData/tqdc/p6.df | Bin 6235 -> 0 bytes .../testData/tqdc/p7(30s)(HV1=18300) | Bin 0 -> 48266 bytes .../src/test/resources/testData/tqdc/p7.df | Bin 5616 -> 0 bytes .../testData/tqdc/p8(30s)(HV1=18250) | Bin 0 -> 100932 bytes .../src/test/resources/testData/tqdc/p8.df | Bin 6636 -> 0 bytes .../testData/tqdc/p9(30s)(HV1=18200) | Bin 0 -> 72555 bytes .../src/test/resources/testData/tqdc/p9.df | Bin 5369 -> 0 bytes .../src/test/resources/testData/tqdc/scenario | 0 .../src/test/resources/testData/tqdc/voltage | Bin 0 -> 81351 bytes numass-workspace/build.gradle.kts | 15 +- .../ru/inr/mass/notebook/NumassJupyter.kt | 40 ++ .../main/kotlin/ru/inr/mass/scripts/demo.kt | 8 +- .../kotlin/ru/inr/mass/scripts/run_2020_12.kt | 2 +- .../kotlin/ru/inr/mass/scripts/run_2021_11.kt | 17 +- .../kotlin/ru/inr/mass/workspace/Numass.kt | 47 ++ .../inr/mass/workspace/amplitudeSpectrum.kt | 57 --- .../kotlin/ru/inr/mass/workspace/files.kt | 39 -- .../kotlin/ru/inr/mass/workspace/plots.kt | 67 ++- 46 files changed, 693 insertions(+), 896 deletions(-) rename {numass-workspace => notebooks}/numass.json (100%) delete mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/AbstractAnalyzer.kt delete mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/DebunchAnalyzer.kt create mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAmplitudeSpectrum.kt create mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzerParameters.kt create mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassEventExtractor.kt delete mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SmartAnalyzer.kt delete mode 100644 numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/Values.kt create mode 100644 numass-analysis/src/jvmMain/kotlin/ru/inr/mass/data/analysis/timeHistogram.kt create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/meta delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p0.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p1(30s)(HV1=18600) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p1.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p2(30s)(HV1=18550) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p2.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p3(30s)(HV1=18500) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p3.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p4(30s)(HV1=18450) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p4.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p5(30s)(HV1=18400) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p5.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p6(30s)(HV1=18350) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p6.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p7(30s)(HV1=18300) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p7.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p8(30s)(HV1=18250) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p8.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p9(30s)(HV1=18200) delete mode 100644 numass-data-proto/src/test/resources/testData/tqdc/p9.df create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/scenario create mode 100644 numass-data-proto/src/test/resources/testData/tqdc/voltage create mode 100644 numass-workspace/src/main/kotlin/ru/inr/mass/notebook/NumassJupyter.kt create mode 100644 numass-workspace/src/main/kotlin/ru/inr/mass/workspace/Numass.kt delete mode 100644 numass-workspace/src/main/kotlin/ru/inr/mass/workspace/amplitudeSpectrum.kt delete mode 100644 numass-workspace/src/main/kotlin/ru/inr/mass/workspace/files.kt diff --git a/numass-workspace/numass.json b/notebooks/numass.json similarity index 100% rename from numass-workspace/numass.json rename to notebooks/numass.json diff --git a/numass-analysis/build.gradle.kts b/numass-analysis/build.gradle.kts index d86ddf8..14516f4 100644 --- a/numass-analysis/build.gradle.kts +++ b/numass-analysis/build.gradle.kts @@ -12,14 +12,18 @@ val tablesVersion: String by rootProject.extra kotlin.sourceSets { commonMain { dependencies { - api(project(":numass-data-model")) + api(projects.numass.numassDataModel) api("space.kscience:dataforge-io:$dataforgeVersion") api("space.kscience:tables-kt:$tablesVersion") + api("space.kscience:kmath-histograms:$kmathVersion") api("space.kscience:kmath-complex:$kmathVersion") api("space.kscience:kmath-stat:$kmathVersion") - api("space.kscience:kmath-histograms:$kmathVersion") } } } +kscience{ + useAtomic() +} + diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/AbstractAnalyzer.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/AbstractAnalyzer.kt deleted file mode 100644 index b5f5e7b..0000000 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/AbstractAnalyzer.kt +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2017 Alexander Nozik. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ru.inr.mass.data.analysis - -import kotlinx.coroutines.flow.* -import ru.inr.mass.data.api.NumassBlock -import ru.inr.mass.data.api.NumassEvent -import ru.inr.mass.data.api.NumassSet -import ru.inr.mass.data.api.SignalProcessor -import space.kscience.dataforge.meta.Meta -import space.kscience.dataforge.meta.get -import space.kscience.dataforge.meta.int -import space.kscience.dataforge.values.Value -import space.kscience.tables.RowTable -import space.kscience.tables.Table - -/** - * Created by darksnake on 11.07.2017. - */ -public abstract class AbstractAnalyzer( - private val processor: SignalProcessor? = null, -) : NumassAnalyzer { - - /** - * Return unsorted stream of events including events from frames. - * In theory, events after processing could be unsorted due to mixture of frames and events. - * In practice usually block have either frame or events, but not both. - * - * @param block - * @return - */ - override fun getEvents(block: NumassBlock, meta: Meta): Flow { - val range = meta.getRange() - return getAllEvents(block).filter { event -> - event.amplitude.toInt() in range - } - } - - protected fun Meta.getRange(): IntRange { - val loChannel = get("window.lo")?.int ?: 0 - val upChannel = get("window.up")?.int ?: Int.MAX_VALUE - return loChannel until upChannel - } - - protected fun getAllEvents(block: NumassBlock): Flow { - return when { - block.framesCount == 0L -> block.events - processor == null -> throw IllegalArgumentException("Signal processor needed to analyze frames") - else -> flow { - emitAll(block.events) - emitAll(block.frames.flatMapConcat { processor.analyze(it) }) - } - } - } - -// /** -// * Get table format for summary table -// * -// * @param config -// * @return -// */ -// protected open fun getTableFormat(config: Meta): ValueTableHeader { -// return TableFormatBuilder() -// .addNumber(HV_KEY, X_VALUE_KEY) -// .addNumber(NumassAnalyzer.LENGTH_KEY) -// .addNumber(NumassAnalyzer.COUNT_KEY) -// .addNumber(NumassAnalyzer.COUNT_RATE_KEY, Y_VALUE_KEY) -// .addNumber(NumassAnalyzer.COUNT_RATE_ERROR_KEY, Y_ERROR_KEY) -// .addColumn(NumassAnalyzer.WINDOW_KEY) -// .addTime() -// .build() -// } - - override suspend fun analyzeSet(set: NumassSet, config: Meta): Table = RowTable( - NumassAnalyzer.length, - NumassAnalyzer.count, - NumassAnalyzer.cr, - NumassAnalyzer.crError, -// NumassAnalyzer.window, -// NumassAnalyzer.timestamp - ) { - - set.points.forEach { point -> - analyzeParent(point, config) - } - } - - public companion object { -// public val NAME_LIST: List = listOf( -// NumassAnalyzer.LENGTH_KEY, -// NumassAnalyzer.COUNT_KEY, -// NumassAnalyzer.COUNT_RATE_KEY, -// NumassAnalyzer.COUNT_RATE_ERROR_KEY, -// NumassAnalyzer.WINDOW_KEY, -// NumassAnalyzer.TIME_KEY -// ) - } -} diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/DebunchAnalyzer.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/DebunchAnalyzer.kt deleted file mode 100644 index 69e82a7..0000000 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/DebunchAnalyzer.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 Alexander Nozik. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ru.inr.mass.data.analysis - -import ru.inr.mass.data.api.NumassBlock -import ru.inr.mass.data.api.SignalProcessor -import space.kscience.dataforge.meta.Meta -import space.kscience.dataforge.meta.descriptors.MetaDescriptor - -/** - * Block analyzer that can perform debunching - * Created by darksnake on 11.07.2017. - */ -public class DebunchAnalyzer(processor: SignalProcessor? = null) : AbstractAnalyzer(processor) { - - override suspend fun analyze(block: NumassBlock, config: Meta): NumassAnalyzerResult { - TODO() - } - - override val descriptor: MetaDescriptor? = null -} diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAmplitudeSpectrum.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAmplitudeSpectrum.kt new file mode 100644 index 0000000..9c452ff --- /dev/null +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAmplitudeSpectrum.kt @@ -0,0 +1,70 @@ +package ru.inr.mass.data.analysis + +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch +import ru.inr.mass.data.api.NumassBlock +import space.kscience.kmath.histogram.LongCounter +import kotlin.math.min + +public class NumassAmplitudeSpectrum(public val amplitudes: Map) { + + public val minChannel: UShort by lazy { amplitudes.keys.minOf { it } } + public val maxChannel: UShort by lazy { amplitudes.keys.maxOf { it } } + + public fun binned(binSize: UInt, range: UIntRange = minChannel..maxChannel): Map { + val keys = sequence { + var left = range.first + do { + val right = min(left + binSize, range.last) + yield(left..right) + left = right + } while (right < range.last) + } + + return keys.associateWith { bin -> amplitudes.filter { it.key in bin }.values.sum().toDouble() } + } +} + +/** + * Build an amplitude spectrum with bin of 1.0 counted from 0.0. Some bins could be missing + */ +public suspend fun NumassBlock.amplitudeSpectrum( + extractor: NumassEventExtractor = NumassEventExtractor.EVENTS_ONLY, +): NumassAmplitudeSpectrum { + val map = HashMap() + extractor.extract(this).collect { event -> + map.getOrPut(event.amplitude) { LongCounter() }.add(1L) + } + return NumassAmplitudeSpectrum(map.mapValues { it.value.value.toULong() }) +} + +/** + * Collect events from block in parallel + */ +public suspend fun Collection.amplitudeSpectrum( + extractor: NumassEventExtractor = NumassEventExtractor.EVENTS_ONLY, +): NumassAmplitudeSpectrum { + val hist = List(UShort.MAX_VALUE.toInt()) { + LongCounter() + } + coroutineScope { + forEach { block -> + launch { + extractor.extract(block).collect { event -> + hist[event.amplitude.toInt()].add(1L) + } + } + } + } + + val map = hist.mapIndexedNotNull { index, counter -> + if (counter.value == 0L) { + null + } else { + index.toUShort() to counter.value.toULong() + } + }.toMap() + + return NumassAmplitudeSpectrum(map) +} \ No newline at end of file diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzer.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzer.kt index 4dfb833..b7a5a9a 100644 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzer.kt +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzer.kt @@ -17,42 +17,46 @@ package ru.inr.mass.data.analysis import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.collect -import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.MAX_CHANNEL -import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.channel -import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.count -import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.cr -import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.crError +import kotlinx.coroutines.flow.filter import ru.inr.mass.data.api.* import ru.inr.mass.data.api.NumassPoint.Companion.HV_KEY -import ru.inr.mass.data.api.NumassPoint.Companion.LENGTH_KEY import space.kscience.dataforge.meta.* -import space.kscience.dataforge.meta.descriptors.Described +import space.kscience.dataforge.names.Name import space.kscience.dataforge.names.asName -import space.kscience.dataforge.values.* -import space.kscience.kmath.histogram.Counter -import space.kscience.kmath.histogram.LongCounter -import space.kscience.tables.* -import kotlin.math.max -import kotlin.math.min -import kotlin.math.pow -import kotlin.math.sqrt +import space.kscience.dataforge.values.ListValue +import space.kscience.dataforge.values.Value +import space.kscience.dataforge.values.ValueType +import space.kscience.dataforge.values.int +import space.kscience.tables.ColumnHeader +import space.kscience.tables.MetaRow +import space.kscience.tables.RowTable +import space.kscience.tables.Table +import kotlin.properties.ReadWriteProperty + + +public fun MutableMetaProvider.uIntRange( + default: UIntRange = 0U..Int.MAX_VALUE.toUInt(), + key: Name? = null, +): ReadWriteProperty = value( + key, + reader = { value -> + val (l, r) = value?.list ?: return@value default + l.int.toUInt()..r.int.toUInt() + }, + writer = { range -> + ListValue(range.first.toInt(), range.last.toInt()) + } +) public class NumassAnalyzerResult : Scheme() { - public var count: Long? by long(NumassAnalyzer.count.name.asName()) - public var countRate: Double? by double(NumassAnalyzer.cr.name.asName()) - public var countRateError: Double? by double(NumassAnalyzer.crError.name.asName()) - public var length: Long? by long(NumassAnalyzer.length.name.asName()) + public var count: Long by long(0L, NumassAnalyzer.count.name.asName()) + public var countRate: Double by double(0.0, NumassAnalyzer.cr.name.asName()) + public var countRateError: Double by double(0.0, NumassAnalyzer.crError.name.asName()) + public var length: Double by double(0.0, NumassAnalyzer.length.name.asName()) public var voltage: Double? by double(HV_KEY.asName()) - public var window: UIntRange? - get() = meta["window"]?.value?.list?.let { - it[0].int.toUInt().rangeTo(it[1].int.toUInt()) - } - set(value) { - meta["window"] = value?.let { ListValue(it.first.toInt(), it.first.toInt()) } - } + public var parameters: NumassAnalyzerParameters by spec(NumassAnalyzerParameters) public companion object : SchemeSpec(::NumassAnalyzerResult) } @@ -62,7 +66,9 @@ public class NumassAnalyzerResult : Scheme() { * A general raw data analysis utility. Could have different implementations * Created by darksnake on 06-Jul-17. */ -public interface NumassAnalyzer : Described { +public abstract class NumassAnalyzer { + + public abstract val extractor: NumassEventExtractor /** * Perform analysis on block. The values for count rate, its error and point length in nanos must @@ -71,67 +77,36 @@ public interface NumassAnalyzer : Described { * @param block * @return */ - public suspend fun analyze(block: NumassBlock, config: Meta = Meta.EMPTY): NumassAnalyzerResult + protected abstract suspend fun analyzeInternal( + block: NumassBlock, + parameters: NumassAnalyzerParameters, + ): NumassAnalyzerResult /** * Analysis result for point including hv information * @param point - * @param config + * @param parameters * @return */ - public suspend fun analyzeParent(point: ParentBlock, config: Meta = Meta.EMPTY): NumassAnalyzerResult { -// //Add properties to config -// val newConfig = config.builder.apply { -// if (point is NumassPoint) { -// setValue("voltage", point.voltage) -// setValue("index", point.index) -// } -// setValue("channel", point.channel) -// } - val res = analyze(point, config) + public suspend fun analyze( + point: ParentBlock, + parameters: NumassAnalyzerParameters = NumassAnalyzerParameters.empty(), + ): NumassAnalyzerResult { + val res = analyzeInternal(point, parameters) if (point is NumassPoint) { res.voltage = point.voltage } + res.parameters = parameters return res } - /** - * Return unsorted stream of events including events from frames - * - * @param block - * @return - */ - public fun getEvents(block: NumassBlock, meta: Meta = Meta.EMPTY): Flow - - /** - * Analyze the whole set. And return results as a table - * - * @param set - * @param config - * @return - */ - public suspend fun analyzeSet(set: NumassSet, config: Meta): Table - - /** - * Get the approximate number of events in block. Not all analyzers support precise event counting - * - * @param block - * @param config - * @return - */ - public suspend fun getCount(block: NumassBlock, config: Meta): Long = - analyze(block, config).getValue(count.name)?.long ?: 0L - - /** - * Get approximate effective point length in nanos. It is not necessary corresponds to real point length. - * - * @param block - * @param config - * @return - */ - public suspend fun getLength(block: NumassBlock, config: Meta = Meta.EMPTY): Long = - analyze(block, config).getValue(LENGTH_KEY)?.long ?: 0L + protected suspend fun NumassBlock.flowFilteredEvents( + parameters: NumassAnalyzerParameters, + ): Flow { + val window = parameters.window + return extractor.extract(this).filter { it.amplitude in window } + } public companion object { @@ -149,120 +124,143 @@ public interface NumassAnalyzer : Described { } } -public suspend fun NumassAnalyzer.getAmplitudeSpectrum( - block: NumassBlock, - range: UIntRange = 0U..MAX_CHANNEL, - config: Meta = Meta.EMPTY, -): Table { - val seconds = block.getLength().inWholeMilliseconds.toDouble() / 1000.0 - return getEvents(block, config).getAmplitudeSpectrum(seconds, range) -} - /** - * Calculate number of counts in the given channel + * Analyze the whole set. And return results as a table * - * @param spectrum - * @param loChannel - * @param upChannel - * @return - */ -internal fun Table.countInWindow(loChannel: Short, upChannel: Short): Long = rows.filter { row -> - row[channel]?.int in loChannel until upChannel -}.sumOf { it[count]?.long ?: 0L } - -/** - * Calculate the amplitude spectrum for a given block. The s - * - * @param this@getAmplitudeSpectrum - * @param length length in seconds, used for count rate calculation + * @param set * @param config * @return */ -private suspend fun Flow.getAmplitudeSpectrum( - length: Double, - range: UIntRange = 0U..MAX_CHANNEL, -): Table { - - //optimized for fastest computation - val spectrum: MutableMap = HashMap() - collect { event -> - val channel = event.amplitude - spectrum.getOrPut(channel.toUInt()) { - LongCounter() - }.add(1L) - } - - return RowTable(channel, count, cr, crError) { - range.forEach { ch -> - val countValue: Long = spectrum[ch]?.value ?: 0L - valueRow( - channel to ch, - count to countValue, - cr to (countValue.toDouble() / length), - crError to sqrt(countValue.toDouble()) / length - ) - } +public suspend fun NumassAnalyzer.analyzeSet( + set: NumassSet, + config: NumassAnalyzerParameters = NumassAnalyzerParameters.empty(), +): Table = RowTable( + NumassAnalyzer.length, + NumassAnalyzer.count, + NumassAnalyzer.cr, + NumassAnalyzer.crError, +// NumassAnalyzer.window, +// NumassAnalyzer.timestamp +) { + set.points.forEach { point -> + addRow(MetaRow(analyze(point, config).meta)) } } - -/** - * Apply window and binning to a spectrum. Empty bins are filled with zeroes - */ -private fun Table.withBinning( - binSize: UInt, range: UIntRange = 0U..MAX_CHANNEL, -): Table = RowTable(channel, count, cr, crError) { -// var chan = loChannel -// ?: this.getColumn(NumassAnalyzer.CHANNEL_KEY).stream().mapToInt { it.int }.min().orElse(0) // -// val top = upChannel -// ?: this.getColumn(NumassAnalyzer.CHANNEL_KEY).stream().mapToInt { it.int }.max().orElse(1) - - val binSizeColumn = newColumn("binSize") - - var chan = range.first - - while (chan < range.last - binSize) { - val counter = LongCounter() - val countRateCounter = Counter.real() - val countRateDispersionCounter = Counter.real() - - val binLo = chan - val binUp = chan + binSize - - rows.filter { row -> - (row[channel]?.int ?: 0U) in binLo until binUp - }.forEach { row -> - counter.add(row[count]?.long ?: 0L) - countRateCounter.add(row[cr]?.double ?: 0.0) - countRateDispersionCounter.add(row[crError]?.double?.pow(2.0) ?: 0.0) - } - val bin = min(binSize, range.last - chan) - - valueRow( - channel to (chan.toDouble() + bin.toDouble() / 2.0), - count to counter.value, - cr to countRateCounter.value, - crError to sqrt(countRateDispersionCounter.value), - binSizeColumn to bin - ) - chan += binSize - } -} - -/** - * Subtract reference spectrum. - */ -private fun subtractAmplitudeSpectrum( - sp1: Table, sp2: Table, -): Table = RowTable(channel, cr, crError) { - sp1.rows.forEach { row1 -> - val channelValue = row1[channel]?.double - val row2 = sp2.rows.find { it[channel]?.double == channelValue } ?: MapRow(emptyMap()) - - val value = max((row1[cr]?.double ?: 0.0) - (row2[cr]?.double ?: 0.0), 0.0) - val error1 = row1[crError]?.double ?: 0.0 - val error2 = row2[crError]?.double ?: 0.0 - val error = sqrt(error1 * error1 + error2 * error2) - valueRow(channel to channelValue, cr to value, crError to error) - } -} \ No newline at end of file +//public suspend fun NumassAnalyzer.getAmplitudeSpectrum( +// block: NumassBlock, +// range: UIntRange = 0U..MAX_CHANNEL, +// config: Meta = Meta.EMPTY, +//): Table { +// val seconds = block.getLength().inWholeMilliseconds.toDouble() / 1000.0 +// return getEvents(block, config).getAmplitudeSpectrum(seconds, range) +//} +// +///** +// * Calculate number of counts in the given channel +// * +// * @param spectrum +// * @param loChannel +// * @param upChannel +// * @return +// */ +//internal fun Table.countInWindow(loChannel: Short, upChannel: Short): Long = rows.filter { row -> +// row[channel]?.int in loChannel until upChannel +//}.sumOf { it[count]?.long ?: 0L } +// +///** +// * Calculate the amplitude spectrum for a given block. The s +// * +// * @param this@getAmplitudeSpectrum +// * @param length length in seconds, used for count rate calculation +// * @param config +// * @return +// */ +//private suspend fun Flow.getAmplitudeSpectrum( +// length: Double, +// range: UIntRange = 0U..MAX_CHANNEL, +//): Table { +// +// //optimized for fastest computation +// val spectrum: MutableMap = HashMap() +// collect { event -> +// val channel = event.amplitude +// spectrum.getOrPut(channel.toUInt()) { +// LongCounter() +// }.add(1L) +// } +// +// return RowTable(channel, count, cr, crError) { +// range.forEach { ch -> +// val countValue: Long = spectrum[ch]?.value ?: 0L +// valueRow( +// channel to ch, +// count to countValue, +// cr to (countValue.toDouble() / length), +// crError to sqrt(countValue.toDouble()) / length +// ) +// } +// } +//} +// +///** +// * Apply window and binning to a spectrum. Empty bins are filled with zeroes +// */ +//private fun Table.withBinning( +// binSize: UInt, range: UIntRange = 0U..MAX_CHANNEL, +//): Table = RowTable(channel, count, cr, crError) { +//// var chan = loChannel +//// ?: this.getColumn(NumassAnalyzer.CHANNEL_KEY).stream().mapToInt { it.int }.min().orElse(0) +//// +//// val top = upChannel +//// ?: this.getColumn(NumassAnalyzer.CHANNEL_KEY).stream().mapToInt { it.int }.max().orElse(1) +// +// val binSizeColumn = newColumn("binSize") +// +// var chan = range.first +// +// while (chan < range.last - binSize) { +// val counter = LongCounter() +// val countRateCounter = Counter.real() +// val countRateDispersionCounter = Counter.real() +// +// val binLo = chan +// val binUp = chan + binSize +// +// rows.filter { row -> +// (row[channel]?.int ?: 0U) in binLo until binUp +// }.forEach { row -> +// counter.add(row[count]?.long ?: 0L) +// countRateCounter.add(row[cr]?.double ?: 0.0) +// countRateDispersionCounter.add(row[crError]?.double?.pow(2.0) ?: 0.0) +// } +// val bin = min(binSize, range.last - chan) +// +// valueRow( +// channel to (chan.toDouble() + bin.toDouble() / 2.0), +// count to counter.value, +// cr to countRateCounter.value, +// crError to sqrt(countRateDispersionCounter.value), +// binSizeColumn to bin +// ) +// chan += binSize +// } +//} +// +///** +// * Subtract reference spectrum. +// */ +//private fun subtractAmplitudeSpectrum( +// sp1: Table, sp2: Table, +//): Table = RowTable(channel, cr, crError) { +// sp1.rows.forEach { row1 -> +// val channelValue = row1[channel]?.double +// val row2 = sp2.rows.find { it[channel]?.double == channelValue } ?: MapRow(emptyMap()) +// +// val value = max((row1[cr]?.double ?: 0.0) - (row2[cr]?.double ?: 0.0), 0.0) +// val error1 = row1[crError]?.double ?: 0.0 +// val error2 = row2[crError]?.double ?: 0.0 +// val error = sqrt(error1 * error1 + error2 * error2) +// valueRow(channel to channelValue, cr to value, crError to error) +// } +//} \ No newline at end of file diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzerParameters.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzerParameters.kt new file mode 100644 index 0000000..264f337 --- /dev/null +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassAnalyzerParameters.kt @@ -0,0 +1,46 @@ +package ru.inr.mass.data.analysis + +import space.kscience.dataforge.meta.* + +public class TimeAnalyzerParameters : Scheme() { + + public enum class AveragingMethod { + ARITHMETIC, + WEIGHTED, + GEOMETRIC + } + + public var value: Int? by int() + + /** + * The relative fraction of events that should be removed by time cut + */ + public var crFraction by double() + public var min by double(0.0) + public var crMin by double(0.0) + + /** + * The number of events in chunk to split the chain into. If null, no chunks are used + */ + public var chunkSize: Int? by int() + + public var inverted: Boolean by boolean(true) + public var sortEvents: Boolean by boolean(false) + + /** + * Chunk averaging method + */ + public var averagingMethod: AveragingMethod by enum(AveragingMethod.WEIGHTED) + + public companion object : SchemeSpec(::TimeAnalyzerParameters) +} + +public class NumassAnalyzerParameters : Scheme() { + public var deadTime: Double by double(0.0) + public var window: UIntRange by uIntRange() + + public var t0: TimeAnalyzerParameters by spec(TimeAnalyzerParameters) + + + public companion object : SchemeSpec(::NumassAnalyzerParameters) +} \ No newline at end of file diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassEventExtractor.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassEventExtractor.kt new file mode 100644 index 0000000..ee6d7c4 --- /dev/null +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassEventExtractor.kt @@ -0,0 +1,22 @@ +package ru.inr.mass.data.analysis + +import kotlinx.coroutines.flow.Flow +import ru.inr.mass.data.api.NumassBlock +import ru.inr.mass.data.api.NumassEvent + +public fun interface NumassEventExtractor { + public suspend fun extract(block: NumassBlock): Flow + + public companion object { + /** + * A default event extractor that ignores frames + */ + public val EVENTS_ONLY: NumassEventExtractor = NumassEventExtractor { it.events } + } +} + +//public fun NumassEventExtractor.filter( +// condition: NumassBlock.(NumassEvent) -> Boolean, +//): NumassEventExtractor = NumassEventExtractor { block -> +// extract(block).filter { block.condition(it) } +//} \ No newline at end of file diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassGenerator.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassGenerator.kt index f3936aa..161a59b 100644 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassGenerator.kt +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/NumassGenerator.kt @@ -11,11 +11,12 @@ package ru.inr.mass.data.analysis //import ru.inr.mass.data.api.NumassBlock //import ru.inr.mass.data.api.OrphanNumassEvent //import ru.inr.mass.data.api.SimpleBlock -//import space.kscience.dataforge.tables.Table //import space.kscience.kmath.chains.Chain //import space.kscience.kmath.chains.MarkovChain //import space.kscience.kmath.chains.StatefulChain //import space.kscience.kmath.stat.RandomGenerator +//import space.kscience.tables.Table +//import kotlin.math.ln //import kotlin.time.Duration.Companion.nanoseconds // //private fun RandomGenerator.nextExp(mean: Double): Double { diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SimpleAnalyzer.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SimpleAnalyzer.kt index 2b2af92..b6afbe5 100644 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SimpleAnalyzer.kt +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SimpleAnalyzer.kt @@ -14,43 +14,29 @@ * limitations under the License. */ -package inr.numass.data.analyzers +package ru.inr.mass.data.analysis import kotlinx.coroutines.flow.count -import ru.inr.mass.data.analysis.AbstractAnalyzer -import ru.inr.mass.data.analysis.NumassAnalyzerResult import ru.inr.mass.data.api.NumassBlock -import ru.inr.mass.data.api.SignalProcessor -import space.kscience.dataforge.meta.Meta -import space.kscience.dataforge.meta.descriptors.MetaDescriptor -import space.kscience.dataforge.meta.descriptors.value -import space.kscience.dataforge.meta.double -import space.kscience.dataforge.meta.get -import space.kscience.dataforge.meta.int -import space.kscience.dataforge.values.ValueType import kotlin.math.sqrt /** * A simple event counter * Created by darksnake on 07.07.2017. */ -public class SimpleAnalyzer(processor: SignalProcessor? = null) : AbstractAnalyzer(processor) { +public class SimpleAnalyzer( + override val extractor: NumassEventExtractor = NumassEventExtractor.EVENTS_ONLY, +) : NumassAnalyzer() { - override val descriptor: MetaDescriptor = MetaDescriptor { - value("deadTime", ValueType.NUMBER) { - info = "Dead time in nanoseconds for correction" - default(0.0) - } - } + override suspend fun analyzeInternal( + block: NumassBlock, + parameters: NumassAnalyzerParameters + ): NumassAnalyzerResult { - override suspend fun analyze(block: NumassBlock, config: Meta): NumassAnalyzerResult { - val loChannel = config["window.lo"]?.int ?: 0 - val upChannel = config["window.up"]?.int ?: Int.MAX_VALUE - - val count: Int = getEvents(block, config).count() + val count: Int = block.flowFilteredEvents(parameters).count() val length: Double = block.getLength().inWholeNanoseconds.toDouble() / 1e9 - val deadTime = config["deadTime"]?.double ?: 0.0 + val deadTime = parameters.deadTime val countRate = if (deadTime > 0) { val mu = count.toDouble() / length @@ -61,11 +47,10 @@ public class SimpleAnalyzer(processor: SignalProcessor? = null) : AbstractAnalyz val countRateError = sqrt(count.toDouble()) / length return NumassAnalyzerResult { - this.length = length.toLong() + this.length = length this.count = count.toLong() this.countRate = countRate this.countRateError = countRateError - this.window = loChannel.toUInt().rangeTo(upChannel.toUInt()) //TODO NumassAnalyzer.timestamp to block.startTime } } diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SmartAnalyzer.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SmartAnalyzer.kt deleted file mode 100644 index 67412d0..0000000 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/SmartAnalyzer.kt +++ /dev/null @@ -1,104 +0,0 @@ -///* -// * Copyright 2017 Alexander Nozik. -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -package ru.inr.mass.data.analysis - -import inr.numass.data.analyzers.SimpleAnalyzer -import kotlinx.coroutines.flow.Flow -import ru.inr.mass.data.api.NumassBlock -import ru.inr.mass.data.api.NumassEvent -import ru.inr.mass.data.api.NumassSet -import ru.inr.mass.data.api.SignalProcessor -import space.kscience.dataforge.meta.Meta -import space.kscience.dataforge.meta.descriptors.MetaDescriptor -import space.kscience.dataforge.meta.get -import space.kscience.dataforge.meta.string -import space.kscience.dataforge.values.Value -import space.kscience.dataforge.values.asValue -import space.kscience.dataforge.values.setValue -import space.kscience.tables.Table - -/** - * An analyzer dispatcher which uses different analyzer for different meta - * Created by darksnake on 11.07.2017. - */ -public open class SmartAnalyzer(processor: SignalProcessor? = null) : AbstractAnalyzer(processor) { - private val simpleAnalyzer = SimpleAnalyzer(processor) - private val debunchAnalyzer = DebunchAnalyzer(processor) - private val timeAnalyzer: NumassAnalyzer = TODO()// TimeAnalyzer(processor) - - override val descriptor: MetaDescriptor? = null - - private fun getAnalyzer(config: Meta): NumassAnalyzer = when (val type = config["type"]?.string) { - null -> if (config["t0"] != null) { - timeAnalyzer - } else { - simpleAnalyzer - } - "simple" -> simpleAnalyzer - "time" -> timeAnalyzer - "debunch" -> debunchAnalyzer - else -> throw IllegalArgumentException("Analyzer $type not found") - } - - override suspend fun analyze(block: NumassBlock, config: Meta): NumassAnalyzerResult { - val analyzer = getAnalyzer(config) - val res = analyzer.analyze(block, config) - return NumassAnalyzerResult.read(res.meta).apply { - setValue(T0_KEY, 0.0.asValue()) - } - } - - override fun getEvents(block: NumassBlock, meta: Meta): Flow = - getAnalyzer(meta).getEvents(block, meta) - - - override suspend fun analyzeSet(set: NumassSet, config: Meta): Table { - return getAnalyzer(config).analyzeSet(set, config) -// fun Value.computeExpression(point: NumassPoint): Int { -// return when { -// this.type == ValueType.NUMBER -> this.int -// this.type == ValueType.STRING -> { -// val exprParams = HashMap() -// -// exprParams["U"] = point.voltage -// -// ExpressionUtils.function(this.string, exprParams).toInt() -// } -// else -> error("Can't interpret $type as expression or number") -// } -// } -// -// val lo = config.getValue("window.lo", 0) -// val up = config.getValue("window.up", Int.MAX_VALUE) -// -// val format = getTableFormat(config) -// -// return ListTable.Builder(format) -// .rows(set.points.map { point -> -// val newConfig = config.builder.apply { -// setValue("window.lo", lo.computeExpression(point)) -// setValue("window.up", up.computeExpression(point)) -// } -// analyzeParent(point, newConfig) -// }) -// .build() - } - - public companion object : SmartAnalyzer() { - public const val T0_KEY: String = "t0" - } -} \ No newline at end of file diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/TimeAnalyzer.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/TimeAnalyzer.kt index 7ac8b4f..8930c2d 100644 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/TimeAnalyzer.kt +++ b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/TimeAnalyzer.kt @@ -15,286 +15,161 @@ // */ // package ru.inr.mass.data.analysis -// -//import hep.dataforge.description.ValueDef -//import hep.dataforge.description.ValueDefs -//import hep.dataforge.meta.Meta -//import hep.dataforge.tables.Adapters.* -//import hep.dataforge.tables.TableFormat -//import hep.dataforge.tables.TableFormatBuilder -//import hep.dataforge.values.* -//import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.COUNT_KEY -//import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.COUNT_RATE_ERROR_KEY -//import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.COUNT_RATE_KEY -//import ru.inr.mass.data.analysis.NumassAnalyzer.Companion.LENGTH_KEY -//import ru.inr.mass.data.analysis.TimeAnalyzer.AveragingMethod.* -//import inr.numass.data.api.* -//import inr.numass.data.api.NumassPoint.Companion.HV_KEY -//import ru.inr.mass.data.api.NumassBlock -//import ru.inr.mass.data.api.SignalProcessor -//import space.kscience.dataforge.values.ValueType -//import java.util.* -//import java.util.concurrent.atomic.AtomicLong -//import kotlin.collections.List -//import kotlin.collections.asSequence -//import kotlin.collections.count -//import kotlin.collections.first -//import kotlin.collections.map -//import kotlin.collections.set -//import kotlin.collections.sortBy -//import kotlin.collections.sumBy -//import kotlin.collections.sumByDouble -//import kotlin.collections.toMutableList -//import kotlin.math.* -//import kotlin.streams.asSequence -// -// -///** -// * An analyzer which uses time information from events -// * Created by darksnake on 11.07.2017. -// */ -//@ValueDefs( -// ValueDef( -// key = "separateParallelBlocks", -// type = [ValueType.BOOLEAN], -// info = "If true, then parallel blocks will be forced to be evaluated separately" -// ), -// ValueDef( -// key = "chunkSize", -// type = [ValueType.NUMBER], -// def = "-1", -// info = "The number of events in chunk to split the chain into. If negative, no chunks are used" -// ) -//) -//open class TimeAnalyzer(processor: SignalProcessor? = null) : AbstractAnalyzer(processor) { -// -// override fun analyze(block: NumassBlock, config: Meta): Values { -// //In case points inside points -// if (block is ParentBlock && (block.isSequential || config.getBoolean("separateParallelBlocks", false))) { -// return analyzeParent(block, config) -// } -// -// val t0 = getT0(block, config).toLong() -// -// val chunkSize = config.getInt("chunkSize", -1) -// -// val count = super.getEvents(block, config).count() -// val length = block.length.toNanos().toDouble() / 1e9 -// -// val res = when { -// count < 1000 -> ValueMap.ofPairs( -// LENGTH_KEY to length, -// COUNT_KEY to count, -// COUNT_RATE_KEY to count.toDouble() / length, -// COUNT_RATE_ERROR_KEY to sqrt(count.toDouble()) / length -// ) -// chunkSize > 0 -> getEventsWithDelay(block, config) -// .chunked(chunkSize) { analyzeSequence(it.asSequence(), t0) } -// .toList() -// .mean(config.getEnum("mean", WEIGHTED)) -// else -> analyzeSequence(getEventsWithDelay(block, config), t0) -// } -// -// return ValueMap.Builder(res) -// .putValue("blockLength", length) -// .putValue(NumassAnalyzer.WINDOW_KEY, config.getRange()) -// .putValue(NumassAnalyzer.TIME_KEY, block.startTime) -// .putValue(T0_KEY, t0.toDouble() / 1000.0) -// .build() -// } -// -// -// private fun analyzeSequence(sequence: Sequence>, t0: Long): Values { -// val totalN = AtomicLong(0) -// val totalT = AtomicLong(0) -// sequence.filter { pair -> pair.second >= t0 } -// .forEach { pair -> -// totalN.incrementAndGet() -// //TODO add progress listener here -// totalT.addAndGet(pair.second) -// } -// -// if (totalN.toInt() == 0) { -// error("Zero number of intervals") -// } -// -// val countRate = -// 1e6 * totalN.get() / (totalT.get() / 1000 - t0 * totalN.get() / 1000)//1e9 / (totalT.get() / totalN.get() - t0); -// val countRateError = countRate / sqrt(totalN.get().toDouble()) -// val length = totalT.get() / 1e9 -// val count = (length * countRate).toLong() -// -// return ValueMap.ofPairs( -// LENGTH_KEY to length, -// COUNT_KEY to count, -// COUNT_RATE_KEY to countRate, -// COUNT_RATE_ERROR_KEY to countRateError -// ) -// -// } -// -// override fun analyzeParent(point: ParentBlock, config: Meta): Values { -// //Average count rates, do not sum events -// val res = point.blocks.map { it -> analyze(it, config) } -// -// val map = HashMap(res.mean(config.getEnum("mean", WEIGHTED)).asMap()) -// if (point is NumassPoint) { -// map[HV_KEY] = Value.of(point.voltage) -// } -// return ValueMap(map) -// } -// -// enum class AveragingMethod { -// ARITHMETIC, -// WEIGHTED, -// GEOMETRIC -// } -// -// /** -// * Combine multiple blocks from the same point into one -// * -// * @return -// */ -// private fun List.mean(method: AveragingMethod): Values { -// -// if (this.isEmpty()) { -// return ValueMap.Builder() -// .putValue(LENGTH_KEY, 0) -// .putValue(COUNT_KEY, 0) -// .putValue(COUNT_RATE_KEY, 0) -// .putValue(COUNT_RATE_ERROR_KEY, 0) -// .build() -// } -// -// val totalTime = sumByDouble { it.getDouble(LENGTH_KEY) } -// -// val (countRate, countRateDispersion) = when (method) { -// ARITHMETIC -> Pair( -// sumByDouble { it.getDouble(COUNT_RATE_KEY) } / size, -// sumByDouble { it.getDouble(COUNT_RATE_ERROR_KEY).pow(2.0) } / size / size -// ) -// WEIGHTED -> Pair( -// sumByDouble { it.getDouble(COUNT_RATE_KEY) * it.getDouble(LENGTH_KEY) } / totalTime, -// sumByDouble { (it.getDouble(COUNT_RATE_ERROR_KEY) * it.getDouble(LENGTH_KEY) / totalTime).pow(2.0) } -// ) -// GEOMETRIC -> { -// val mean = exp(sumByDouble { ln(it.getDouble(COUNT_RATE_KEY)) } / size) -// val variance = (mean / size).pow(2.0) * sumByDouble { -// (it.getDouble(COUNT_RATE_ERROR_KEY) / it.getDouble( -// COUNT_RATE_KEY -// )).pow(2.0) -// } -// Pair(mean, variance) -// } -// } -// -// return ValueMap.Builder(first()) -// .putValue(LENGTH_KEY, totalTime) -// .putValue(COUNT_KEY, sumBy { it.getInt(COUNT_KEY) }) -// .putValue(COUNT_RATE_KEY, countRate) -// .putValue(COUNT_RATE_ERROR_KEY, sqrt(countRateDispersion)) -// .build() -// } -// -// @ValueDefs( -// ValueDef(key = "t0", type = arrayOf(ValueType.NUMBER), info = "Constant t0 cut"), -// ValueDef( -// key = "t0.crFraction", -// type = arrayOf(ValueType.NUMBER), -// info = "The relative fraction of events that should be removed by time cut" -// ), -// ValueDef(key = "t0.min", type = arrayOf(ValueType.NUMBER), def = "0", info = "Minimal t0") -// ) -// protected fun getT0(block: NumassBlock, meta: Meta): Int { -// return if (meta.hasValue("t0")) { -// meta.getInt("t0") -// } else if (meta.hasMeta("t0")) { -// val fraction = meta.getDouble("t0.crFraction") -// val cr = estimateCountRate(block) -// if (cr < meta.getDouble("t0.minCR", 0.0)) { -// 0 -// } else { -// max(-1e9 / cr * ln(1.0 - fraction), meta.getDouble("t0.min", 0.0)).toInt() -// } -// } else { -// 0 -// } -// -// } -// -// private fun estimateCountRate(block: NumassBlock): Double { -// return block.events.count().toDouble() / block.length.toMillis() * 1000 -// } -// -// fun zipEvents(block: NumassBlock, config: Meta): Sequence> { -// return getAllEvents(block).asSequence().zipWithNext() -// } -// -// /** -// * The chain of event with delays in nanos -// * -// * @param block -// * @param config -// * @return -// */ -// fun getEventsWithDelay(block: NumassBlock, config: Meta): Sequence> { -// val inverted = config.getBoolean("inverted", true) -// //range is included in super.getEvents -// val events = super.getEvents(block, config).toMutableList() -// -// if (config.getBoolean("sortEvents", false) || (block is ParentBlock && !block.isSequential)) { -// //sort in place if needed -// events.sortBy { it.timeOffset } -// } -// -// return events.asSequence().zipWithNext { prev, next -> -// val delay = max(next.timeOffset - prev.timeOffset, 0) -// if (inverted) { -// Pair(next, delay) -// } else { -// Pair(prev, delay) -// } -// } -// } -// -// /** -// * The filtered stream of events -// * -// * @param block -// * @param meta -// * @return -// */ -// override fun getEvents(block: NumassBlock, meta: Meta): List { -// val t0 = getT0(block, meta).toLong() -// return getEventsWithDelay(block, meta) -// .filter { pair -> pair.second >= t0 } -// .map { it.first }.toList() -// } -// -// public override fun getTableFormat(config: Meta): TableFormat { -// return TableFormatBuilder() -// .addNumber(HV_KEY, X_VALUE_KEY) -// .addNumber(LENGTH_KEY) -// .addNumber(COUNT_KEY) -// .addNumber(COUNT_RATE_KEY, Y_VALUE_KEY) -// .addNumber(COUNT_RATE_ERROR_KEY, Y_ERROR_KEY) -// .addColumn(NumassAnalyzer.WINDOW_KEY) -// .addTime() -// .addNumber(T0_KEY) -// .build() -// } -// -// companion object { -// const val T0_KEY = "t0" -// -// val NAME_LIST = arrayOf( -// LENGTH_KEY, -// COUNT_KEY, -// COUNT_RATE_KEY, -// COUNT_RATE_ERROR_KEY, -// NumassAnalyzer.WINDOW_KEY, -// NumassAnalyzer.TIME_KEY, -// T0_KEY -// ) -// } -//} + +import kotlinx.coroutines.flow.* +import ru.inr.mass.data.analysis.TimeAnalyzerParameters.AveragingMethod +import ru.inr.mass.data.api.NumassBlock +import ru.inr.mass.data.api.NumassEvent +import ru.inr.mass.data.api.ParentBlock +import space.kscience.kmath.streaming.asFlow +import space.kscience.kmath.streaming.chunked +import space.kscience.kmath.structures.Buffer +import kotlin.math.* + + +/** + * An analyzer which uses time information from events + * Created by darksnake on 11.07.2017. + */ +public open class TimeAnalyzer(override val extractor: NumassEventExtractor) : NumassAnalyzer() { + + override suspend fun analyzeInternal( + block: NumassBlock, + parameters: NumassAnalyzerParameters, + ): NumassAnalyzerResult { + //Parallel processing and merging of parent blocks + if (block is ParentBlock) { + val res = block.flowBlocks().map { analyzeInternal(it, parameters) }.toList() + return res.combineResults(parameters.t0.averagingMethod) + } + + val t0 = getT0(block, parameters.t0).toLong() + + return when (val chunkSize = parameters.t0.chunkSize) { + null -> block.flowFilteredEvents(parameters) + .byPairs(parameters.t0.inverted) + .analyze(t0) + // // chunk is larger than a number of event + // chunkSize > count -> NumassAnalyzerResult { + // this.length = length + // this.count = count + // this.countRate = count.toDouble() / length + // this.countRateError = sqrt(count.toDouble()) / length + // } + else -> block.flowFilteredEvents(parameters) + .byPairs(parameters.t0.inverted) + .chunked(chunkSize, Buffer.Companion::auto) + .map { it.asFlow().analyze(t0) } + .toList() + .combineResults(parameters.t0.averagingMethod) + } + + } + + + /** + * Analyze given flow of events + delays + */ + private suspend fun Flow>.analyze(t0: Long): NumassAnalyzerResult { + var totalN = 0L + var totalT = 0L + filter { pair -> pair.second >= t0 }.collect { pair -> + totalN++ + //TODO add progress listener here + totalT+= pair.second + } + + if (totalN == 0L) { + error("Zero number of intervals") + } + + val countRate = 1e6 * totalN / (totalT / 1000 - t0 * totalN / 1000) + val countRateError = countRate / sqrt(totalN.toDouble()) + val length = totalT / 1e9 + val count = (length * countRate).toLong() + + return NumassAnalyzerResult { + this.length = totalT / 1e9 + this.count = count + this.countRate = countRate + this.countRateError = countRateError + } + } + + /** + * Combine multiple blocks from the same point into one + * + * @return + */ + private fun List.combineResults(method: AveragingMethod): NumassAnalyzerResult { + + if (this.isEmpty()) { + return NumassAnalyzerResult.empty() + } + + val totalTime = sumOf { it.length } + + val (countRate, countRateDispersion) = when (method) { + AveragingMethod.ARITHMETIC -> Pair( + sumOf { it.countRate } / size, + sumOf { it.countRateError.pow(2.0) } / size / size + ) + AveragingMethod.WEIGHTED -> Pair( + sumOf { it.countRate * it.length } / totalTime, + sumOf { (it.countRateError * it.length / totalTime).pow(2.0) } + ) + AveragingMethod.GEOMETRIC -> { + val mean = exp(sumOf { ln(it.countRate) } / size) + val variance = (mean / size).pow(2.0) * sumOf { + (it.countRateError / it.countRate).pow(2.0) + } + Pair(mean, variance) + } + } + + return NumassAnalyzerResult { + length = totalTime + count = sumOf { it.count } + this.countRate = countRate + this.countRateError = sqrt(countRateDispersion) + } + } + + /** + * Compute actual t0 + */ + private suspend fun getT0(block: NumassBlock, parameters: TimeAnalyzerParameters): Int { + parameters.value?.let { return it } + parameters.crFraction?.let { fraction -> + val cr = block.events.count().toDouble() / block.getLength().inWholeMilliseconds * 1000 + if (cr < parameters.crMin) { + 0 + } else { + max(-1e9 / cr * ln(1.0 - fraction), parameters.min).toInt() + } + } + return 0 + } + + /** + * Add a delay after (inverted = false) or before (inverted = true) event to each event + */ + private suspend fun Flow.byPairs(inverted: Boolean = true): Flow> = flow { + var prev: NumassEvent? + var next: NumassEvent? + collect { value -> + next = value + prev = next + if (prev != null && next != null) { + val delay = next!!.timeOffset - prev!!.timeOffset + if (delay < 0) error("Events are not ordered!") + if (inverted) { + emit(Pair(next!!, delay)) + } else { + emit(Pair(prev!!, delay)) + } + } + } + } + +} diff --git a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/Values.kt b/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/Values.kt deleted file mode 100644 index 9529c62..0000000 --- a/numass-analysis/src/commonMain/kotlin/ru/inr/mass/data/analysis/Values.kt +++ /dev/null @@ -1,5 +0,0 @@ -package ru.inr.mass.data.analysis - -import space.kscience.dataforge.values.Value - -public typealias Values = Map \ No newline at end of file diff --git a/numass-analysis/src/jvmMain/kotlin/ru/inr/mass/data/analysis/timeHistogram.kt b/numass-analysis/src/jvmMain/kotlin/ru/inr/mass/data/analysis/timeHistogram.kt new file mode 100644 index 0000000..03061d2 --- /dev/null +++ b/numass-analysis/src/jvmMain/kotlin/ru/inr/mass/data/analysis/timeHistogram.kt @@ -0,0 +1,37 @@ +package ru.inr.mass.data.analysis + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.transform +import kotlinx.coroutines.runBlocking +import ru.inr.mass.data.api.NumassBlock +import ru.inr.mass.data.api.getTime +import space.kscience.kmath.histogram.UnivariateHistogram +import kotlin.math.max + +public fun Flow.zipWithNext(block: (l: T, r: T) -> R): Flow { + var current: T? = null + return transform { r -> + current?.let { l -> + emit(block(l, r)) + } + current = r + } +} + +public fun NumassBlock.timeHistogram( + binSize: Double, + extractor: NumassEventExtractor = NumassEventExtractor.EVENTS_ONLY, +): UnivariateHistogram = UnivariateHistogram.uniform(binSize) { + runBlocking { + extractor.extract(this@timeHistogram).zipWithNext { l, r -> + if(l.owner == r.owner) { + max((r.getTime() - l.getTime()).inWholeMicroseconds,0L) + } else { + 0 + } + }.collect { + putValue(it.toDouble()) + } + } +} diff --git a/numass-data-proto/src/test/kotlin/ru/inr/mass/data/proto/TestNumassDirectory.kt b/numass-data-proto/src/test/kotlin/ru/inr/mass/data/proto/TestNumassDirectory.kt index 876ef21..5448158 100644 --- a/numass-data-proto/src/test/kotlin/ru/inr/mass/data/proto/TestNumassDirectory.kt +++ b/numass-data-proto/src/test/kotlin/ru/inr/mass/data/proto/TestNumassDirectory.kt @@ -3,14 +3,13 @@ package ru.inr.mass.data.proto import kotlinx.coroutines.flow.toList import kotlinx.coroutines.runBlocking import org.junit.jupiter.api.Test -import ru.inr.mass.data.api.NumassPoint +import ru.inr.mass.data.api.NumassSet import ru.inr.mass.data.api.ParentBlock import space.kscience.dataforge.context.Context import space.kscience.dataforge.meta.get import space.kscience.dataforge.meta.string import space.kscience.dataforge.values.ListValue import java.nio.file.Path -import kotlin.test.Ignore import kotlin.test.assertEquals class TestNumassDirectory { @@ -31,10 +30,10 @@ class TestNumassDirectory { } @Test - @Ignore fun testTQDCRead() = runBlocking { - val pointPath = Path.of("C:\\Users\\altavir\\Desktop\\p20211122173034(20s).dat") - val point: NumassPoint = context.readNumassPointFile(pointPath)!! + val pointPath = Path.of("src/test/resources", "testData/tqdc") + val set: NumassSet = context.readNumassDirectory(pointPath) + val point = set.first { it.voltage == 16000.0 } point.getChannels().forEach { (channel, block) -> println("$channel: $block") if(block is ParentBlock){ diff --git a/numass-data-proto/src/test/resources/testData/tqdc/meta b/numass-data-proto/src/test/resources/testData/tqdc/meta new file mode 100644 index 0000000000000000000000000000000000000000..38af9189e257174a2dd02ced33491d018fea4d9b GIT binary patch literal 4147 zcmds4%}*0S6o+dQ5-;AT%fSn6_oLgEO^6>D^rHAdP!ZECyVG{1`{C?jQVj`;df^}# zubSw|gNI^75orAvX8$AK+p-0k5{qE0Y}4-Uyf^cH^WJZ!zZp&r3|<(}Kj()A1_$6e za~6N`N)8Vto+b!fg5laWbpl_|$o;4VTU$1K!b>ozZ!pUXEY|@y!L%M*CS?-wX+Y+x zt}##M7W|qp((WJiqKvt$Xt*ZDPKEB~pyoy9tJ5U%@AUEmy&O3h6?#aVz_Ka0*&c?G zMOjKoa!OREL`73YP0R^xSc`iIPt6RonwUSuGt6p|sL4t%Gd##QrISf5bIiB#@f+ja z8Fwh1vYHBv>WNOfiwX(JKk#+l43`N13AbnAb6)3P_%`3*4Z<6|j_vhunST$L)18n_ zJ)lLz)5&aA%gUOp_L7zEP{JkNt&A%a(BZkh3y@dYT1%WI8J>*`XbkD+x79`i> zLOhTaX>Ui`w`cyIq>OsiS~2#EhU_HIp*)7PMOZsR$Ad*f_fJkodx3Hwr^3lE{Z`8U zHz?gnf2^gS)3SwrCD@&kNEDo$Zf;Wb?<$!pZH$Ih1|M(f^_T z#a7Gh0MVH>az>!8m-tbu8#cS+Pjv|oisCyocL zqIRC1_!>lk2;uW6PJ@W)f>@Y!_&Wp?uJ9j(zXd_K4(bq;S@?`^@l9-82eH=VTZF&o zt9ibfQY1xAL%%nK?*MoZmINeS9lABbmGC9LG@(;lZlZk?Y%ii2?f{Bcd^3Cv0u+G| z2!t7cP}m;>VuoR6R%qZW&N675T2$^+u6_G$4v#W}Z>$Y2`lFMv8D0UonD?#A-S|($< zhMz9GZn;X+z$<)Tz=Lzf%t-Ph+nKpFsj9Wy6DAh!lv0;&-n(eeS09y2YE5}qEMG28 z&tLbAyGDkZR&aj7_s0B+&Mc=KgLFO0^uT2(^{+76Zugj5X1Z+`8GUSFy3s*O!zYy= rO_lS8Xy|4x9tF<9Ea*B}MN{%{YKR?UwP!gcw^*{OR7fl)h7!L3saeu- literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p0.df b/numass-data-proto/src/test/resources/testData/tqdc/p0.df deleted file mode 100644 index ccb33f12f7b4cf94072302c876601e2c93c818e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6806 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 AegFUf literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p1.df b/numass-data-proto/src/test/resources/testData/tqdc/p1.df deleted file mode 100644 index f11d36e0229e1283e42bbcc3f6bc7d49242e9303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5701 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 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p3(30s)(HV1=18500) b/numass-data-proto/src/test/resources/testData/tqdc/p3(30s)(HV1=18500) new file mode 100644 index 0000000000000000000000000000000000000000..f8d16265aeedc35adef149929690e3aafd527de8 GIT binary patch literal 42808 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
    IVIbT=C`wa?NN-^hkb@vq+n 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 b>GNX~AW+GyLpT!%uX4#wOO1clpZNa(QY?>w literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p3.df b/numass-data-proto/src/test/resources/testData/tqdc/p3.df deleted file mode 100644 index fd7ad6c51db248b6cea42779dde33376f7d2a421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6551 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 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p4(30s)(HV1=18450) b/numass-data-proto/src/test/resources/testData/tqdc/p4(30s)(HV1=18450) new file mode 100644 index 0000000000000000000000000000000000000000..e86b8a766ab8df299f12d0108bd34867237cc120 GIT binary patch literal 48930 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 literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p4.df b/numass-data-proto/src/test/resources/testData/tqdc/p4.df deleted file mode 100644 index a536407468df13d1ab0a0b332513ba6900e3cf49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7061 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 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p5(30s)(HV1=18400) b/numass-data-proto/src/test/resources/testData/tqdc/p5(30s)(HV1=18400) new file mode 100644 index 0000000000000000000000000000000000000000..e996c2980d32de6ce546cfbc1fc6603bd97cb892 GIT binary patch literal 11504 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 literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p5.df b/numass-data-proto/src/test/resources/testData/tqdc/p5.df deleted file mode 100644 index 7520233c14bd545151f19f59aca41704f77aaf10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 Ul~ePcQiGzsa1UR90F(yxUv=_3Q~&?~ diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p6(30s)(HV1=18350) b/numass-data-proto/src/test/resources/testData/tqdc/p6(30s)(HV1=18350) new file mode 100644 index 0000000000000000000000000000000000000000..dc73e80f737fd261dbb6d3b43706f6e0367cc599 GIT binary patch literal 78779 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 literal 0 HcmV?d00001 diff --git a/numass-workspace/build.gradle.kts b/numass-workspace/build.gradle.kts index b5ab348..0d46591 100644 --- a/numass-workspace/build.gradle.kts +++ b/numass-workspace/build.gradle.kts @@ -13,11 +13,14 @@ val plotlyVersion: String by rootProject.extra val kmathVersion: String by rootProject.extra dependencies { - implementation(project(":numass-data-proto")) - implementation(project(":numass-model")) - implementation(project(":numass-analysis")) + implementation(projects.numassDataProto) + implementation(projects.numassModel) + implementation(projects.numassAnalysis) implementation("space.kscience:dataforge-workspace:$dataforgeVersion") - implementation("space.kscience:plotlykt-core:$plotlyVersion") - implementation("space.kscience:kmath-histograms:$kmathVersion") - implementation("space.kscience:kmath-for-real:$kmathVersion") + implementation("space.kscience:plotlykt-jupyter:$plotlyVersion") + implementation("space.kscience:kmath-jupyter:$kmathVersion") +} + +kscience{ + jupyterLibrary("ru.inr.mass.notebook.NumassJupyter") } \ No newline at end of file diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/notebook/NumassJupyter.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/notebook/NumassJupyter.kt new file mode 100644 index 0000000..9d06756 --- /dev/null +++ b/numass-workspace/src/main/kotlin/ru/inr/mass/notebook/NumassJupyter.kt @@ -0,0 +1,40 @@ +package ru.inr.mass.notebook + + +import org.jetbrains.kotlinx.jupyter.api.HTML +import org.jetbrains.kotlinx.jupyter.api.libraries.JupyterIntegration +import ru.inr.mass.data.api.NumassBlock +import ru.inr.mass.data.api.NumassSet +import ru.inr.mass.workspace.Numass +import ru.inr.mass.workspace.numassSet +import space.kscience.plotly.Plotly + +internal class NumassJupyter : JupyterIntegration() { + override fun Builder.onLoaded() { + repositories( + "https://repo.kotlin.link" + ) + + import( + "ru.inr.mass.models.*", + "ru.inr.mass.data.analysis.*", + "ru.inr.mass.workspace.*", + "ru.inr.mass.data.api.*", + "ru.inr.mass.data.proto.*", + "space.kscience.dataforge.data.*", + "kotlinx.coroutines.*", + "kotlinx.coroutines.flow.*", + ) + + import() + + + render { + + } + + render { numassSet -> + HTML(Plotly.numassSet(numassSet).render(), true) + } + } +} \ No newline at end of file diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/demo.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/demo.kt index 76efb9f..f247f88 100644 --- a/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/demo.kt +++ b/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/demo.kt @@ -1,6 +1,8 @@ -package ru.inr.mass.workspace +package ru.inr.mass.scripts import ru.inr.mass.data.proto.NumassDirectorySet +import ru.inr.mass.workspace.Numass.readNumassRepository +import ru.inr.mass.workspace.numassSet import space.kscience.dataforge.data.DataTree import space.kscience.dataforge.data.await import space.kscience.dataforge.data.getData @@ -11,6 +13,6 @@ suspend fun main() { val repo: DataTree = readNumassRepository("D:\\Work\\Numass\\data\\2018_04") //val dataPath = Path.of("D:\\Work\\Numass\\data\\2018_04\\Adiabacity_19\\set_4\\") //val testSet = NUMASS.context.readNumassDirectory(dataPath) - val testSet = repo.getData("Adiabacity_19.set_4")?.await() ?: error("Not found") - Plotly.numassDirectory(testSet).makeFile() + val testSet = repo.getData("Adiabacity_19.set_3")?.await() ?: error("Not found") + Plotly.numassSet(testSet).makeFile() } \ No newline at end of file diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2020_12.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2020_12.kt index 0c5e533..e62c5e7 100644 --- a/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2020_12.kt +++ b/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2020_12.kt @@ -2,7 +2,7 @@ package ru.inr.mass.scripts import kotlinx.coroutines.flow.collect import ru.inr.mass.data.proto.NumassDirectorySet -import ru.inr.mass.workspace.readNumassRepository +import ru.inr.mass.workspace.Numass.readNumassRepository import space.kscience.dataforge.data.DataTree import space.kscience.dataforge.data.filter import space.kscience.dataforge.meta.string diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2021_11.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2021_11.kt index f202f94..6ad4038 100644 --- a/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2021_11.kt +++ b/numass-workspace/src/main/kotlin/ru/inr/mass/scripts/run_2021_11.kt @@ -1,13 +1,10 @@ package ru.inr.mass.scripts import kotlinx.coroutines.flow.toList -import kotlinx.html.code import kotlinx.html.h2 import kotlinx.html.p import kotlinx.serialization.json.Json -import ru.inr.mass.workspace.readNumassDirectory -import space.kscience.dataforge.io.JsonMetaFormat -import space.kscience.dataforge.io.toString +import ru.inr.mass.workspace.Numass.readNumassDirectory import space.kscience.dataforge.meta.MetaSerializer import space.kscience.plotly.* @@ -33,18 +30,18 @@ suspend fun main() { h2 { +"Analysis" } plot { histogram { - name="max" - x.numbers = frames.map { frame -> frame.signal.maxOf { it.toUShort().toInt() - Short.MAX_VALUE } } + name = "max" + x.numbers = frames.map { frame -> frame.signal.maxOf { it.toUShort().toInt() - Short.MAX_VALUE } } } histogram { - name="max-min" - xbins{ + name = "max-min" + xbins { size = 2.0 } x.numbers = frames.map { frame -> - frame.signal.maxOf { it.toUShort().toInt() - Short.MAX_VALUE } - - frame.signal.minOf { it.toUShort().toInt() - Short.MAX_VALUE } + frame.signal.maxOf { it.toUShort().toInt() - Short.MAX_VALUE } - + frame.signal.minOf { it.toUShort().toInt() - Short.MAX_VALUE } } } } diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/Numass.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/Numass.kt new file mode 100644 index 0000000..72be471 --- /dev/null +++ b/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/Numass.kt @@ -0,0 +1,47 @@ +package ru.inr.mass.workspace + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext +import ru.inr.mass.data.api.NumassSet +import ru.inr.mass.data.proto.NumassDirectorySet +import ru.inr.mass.data.proto.readNumassDirectory +import space.kscience.dataforge.data.* +import space.kscience.dataforge.names.Name +import space.kscience.dataforge.names.NameToken +import java.nio.file.Files +import java.nio.file.Path +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.exists +import kotlin.io.path.isDirectory +import kotlin.io.path.relativeTo +import kotlin.streams.toList + +object Numass { + fun readNumassDirectory(path: String): NumassDirectorySet = NUMASS.context.readNumassDirectory(path) + + @OptIn(ExperimentalPathApi::class) + fun readNumassRepository(path: Path): DataTree = runBlocking { + ActiveDataTree { + @Suppress("BlockingMethodInNonBlockingContext") + withContext(Dispatchers.IO) { + Files.walk(path).filter { + it.isDirectory() && it.resolve("meta").exists() + }.toList().forEach { childPath -> + val name = Name(childPath.relativeTo(path).map { segment -> + NameToken(segment.fileName.toString()) + }) + val value = NUMASS.context.readNumassDirectory(childPath) + static(name, value, value.meta) + } + } + //TODO add file watcher + } + } + + fun readNumassRepository(path: String): DataTree = readNumassRepository(Path.of(path)) +} + +operator fun DataSet.get(name: String): NumassSet? = runBlocking { + getData(Name.parse(name))?.await() +} diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/amplitudeSpectrum.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/amplitudeSpectrum.kt deleted file mode 100644 index c0abcf3..0000000 --- a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/amplitudeSpectrum.kt +++ /dev/null @@ -1,57 +0,0 @@ -@file:Suppress("EXPERIMENTAL_API_USAGE") -package ru.inr.mass.workspace - -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.runBlocking -import ru.inr.mass.data.api.NumassPoint -import space.kscience.dataforge.context.logger -import space.kscience.dataforge.context.warn -import space.kscience.kmath.histogram.UnivariateHistogram -import space.kscience.kmath.histogram.center -import space.kscience.kmath.histogram.put -import space.kscience.kmath.misc.UnstableKMathAPI -import space.kscience.kmath.structures.DoubleBuffer -import space.kscience.kmath.structures.asBuffer - - -/** - * Build an amplitude spectrum with bin of 1.0 counted from 0.0. Some bins could be missing - */ -fun NumassPoint.spectrum(): UnivariateHistogram = UnivariateHistogram.uniform(1.0) { - runBlocking { - events.collect { - putValue(it.amplitude.toDouble()) - } - } -} - -operator fun UnivariateHistogram.component1(): DoubleBuffer = bins.map { it.domain.center }.toDoubleArray().asBuffer() -operator fun UnivariateHistogram.component2(): DoubleBuffer = bins.map { it.value }.toDoubleArray().asBuffer() - -fun Collection.spectrum(): UnivariateHistogram { - if (distinctBy { it.voltage }.size != 1) { - NUMASS.logger.warn { "Spectrum is generated from points with different hv value: $this" } - } - - return UnivariateHistogram.uniform(1.0) { - runBlocking { - this@spectrum.forEach { point -> - point.events.collect { put(it.amplitude.toDouble()) } - } - } - } -} - -/** - * Re-shape the spectrum with the increased bin size and range. Throws a error if new bin is smaller than before. - */ -@OptIn(UnstableKMathAPI::class) -fun UnivariateHistogram.reShape( - binSize: Int, - channelRange: IntRange, -): UnivariateHistogram = UnivariateHistogram.uniform(binSize.toDouble()) { - this@reShape.bins.filter { it.domain.center.toInt() in channelRange }.forEach { bin -> - if (bin.domain.volume() > binSize.toDouble()) error("Can't reShape the spectrum with increased binning") - putValue(bin.domain.center, bin.value) - } -} \ No newline at end of file diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/files.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/files.kt deleted file mode 100644 index dfb02a9..0000000 --- a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/files.kt +++ /dev/null @@ -1,39 +0,0 @@ -package ru.inr.mass.workspace - -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import ru.inr.mass.data.proto.NumassDirectorySet -import ru.inr.mass.data.proto.readNumassDirectory -import space.kscience.dataforge.data.ActiveDataTree -import space.kscience.dataforge.data.DataTree -import space.kscience.dataforge.data.static -import space.kscience.dataforge.names.Name -import space.kscience.dataforge.names.NameToken -import java.nio.file.Files -import java.nio.file.Path -import kotlin.io.path.ExperimentalPathApi -import kotlin.io.path.exists -import kotlin.io.path.isDirectory -import kotlin.io.path.relativeTo -import kotlin.streams.toList - -fun readNumassDirectory(path: String): NumassDirectorySet = NUMASS.context.readNumassDirectory(path) - -@OptIn(ExperimentalPathApi::class) -suspend fun readNumassRepository(path: Path): DataTree = ActiveDataTree { - @Suppress("BlockingMethodInNonBlockingContext") - withContext(Dispatchers.IO) { - Files.walk(path).filter { - it.isDirectory() && it.resolve("meta").exists() - }.toList().forEach { childPath -> - val name = Name(childPath.relativeTo(path).map { segment -> - NameToken(segment.fileName.toString()) - }) - val value = NUMASS.context.readNumassDirectory(childPath) - static(name, value, value.meta) - } - } - //TODO add file watcher -} - -suspend fun readNumassRepository(path: String): DataTree = readNumassRepository(Path.of(path)) diff --git a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/plots.kt b/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/plots.kt index 5ff2565..e8f261f 100644 --- a/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/plots.kt +++ b/numass-workspace/src/main/kotlin/ru/inr/mass/workspace/plots.kt @@ -1,8 +1,13 @@ package ru.inr.mass.workspace +import kotlinx.coroutines.runBlocking import kotlinx.html.h1 import kotlinx.html.h2 -import ru.inr.mass.data.api.NumassPoint +import ru.inr.mass.data.analysis.NumassAmplitudeSpectrum +import ru.inr.mass.data.analysis.NumassEventExtractor +import ru.inr.mass.data.analysis.amplitudeSpectrum +import ru.inr.mass.data.analysis.timeHistogram +import ru.inr.mass.data.api.NumassSet import ru.inr.mass.data.proto.HVData import ru.inr.mass.data.proto.NumassDirectorySet import space.kscience.dataforge.values.asValue @@ -14,29 +19,29 @@ import space.kscience.kmath.operations.asIterable import space.kscience.kmath.structures.Buffer import space.kscience.kmath.structures.DoubleBuffer import space.kscience.plotly.* -import space.kscience.plotly.models.Scatter -import space.kscience.plotly.models.Trace -import space.kscience.plotly.models.TraceValues +import space.kscience.plotly.models.* /** * Plot a kmath histogram */ @OptIn(UnstableKMathAPI::class) -fun Plot.histogram(histogram: UnivariateHistogram, block: Scatter.() -> Unit): Trace = scatter { +fun Plot.histogram(histogram: UnivariateHistogram, block: Scatter.() -> Unit = {}): Trace = scatter { x.numbers = histogram.bins.map { it.domain.center } y.numbers = histogram.bins.map { it.value } + line.shape = LineShape.hv block() } -fun Plot.amplitudeSpectrum( - point: NumassPoint, - binSize: Int = 20, - range: IntRange = 0..2000, - name: String = point.toString(), +fun Plot.histogram( + spectrum: NumassAmplitudeSpectrum, + binSize: UInt = 20U, + block: Scatter.() -> Unit = {}, ): Trace = scatter { - histogram(point.spectrum().reShape(binSize, range)) { - this.name = name - } + val binned = spectrum.binned(binSize) + x.numbers = binned.keys.map { (it.first + it.last).toDouble() / 2.0 } + y.numbers = binned.values + line.shape = LineShape.hv + block() } /** @@ -47,26 +52,44 @@ fun Plot.hvData(data: HVData): Trace = scatter { y.numbers = data.map { it.value } } -fun Plotly.numassDirectory(set: NumassDirectorySet, binSize: Int = 20, range: IntRange = 0..2000): PlotlyPage = +fun Plotly.numassSet( + set: NumassSet, + amplitudeBinSize: UInt = 20U, + eventExtractor: NumassEventExtractor = NumassEventExtractor.EVENTS_ONLY, +): PlotlyPage = Plotly.page { h1 { - +"Numass point set ${set.path}" + +"Numass point set ${ShapeType.path}" } h2 { +"Amplitude spectrum" } plot { - set.points.sortedBy { it.index }.forEach { - amplitudeSpectrum(it, binSize, range) + runBlocking { + set.points.sortedBy { it.index }.forEach { + histogram(it.amplitudeSpectrum(eventExtractor), amplitudeBinSize) + } } } - set.getHvData()?.let { entries -> - h2 { - +"HV" + h2 { + +"Time spectra" + } + plot { + set.points.sortedBy { it.index }.forEach { + histogram(it.timeHistogram(1e3)) } - plot { - hvData(entries) + layout.yaxis.type = AxisType.log + + } + if (set is NumassDirectorySet) { + set.getHvData()?.let { entries -> + h2 { + +"HV" + } + plot { + hvData(entries) + } } } }

    xmXa@LNNrpW?dhUDJ7njxVSSC?^mx*IA&}09 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 YM$*d}8YuL(rw8RC51`9{<{+v60?{6$(f|Me diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p7(30s)(HV1=18300) b/numass-data-proto/src/test/resources/testData/tqdc/p7(30s)(HV1=18300) new file mode 100644 index 0000000000000000000000000000000000000000..18d2ae90e6cdb94149617f3ec287dfc189aec9d5 GIT binary patch literal 48266 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 literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p7.df b/numass-data-proto/src/test/resources/testData/tqdc/p7.df deleted file mode 100644 index 28852ae13dadbd9d5c1d95ca2564932264056f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5616 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%0DsY8}g>fQTZ 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 OQ|Z9AbTW7{8TmiA<~j!e literal 0 HcmV?d00001 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/p8.df b/numass-data-proto/src/test/resources/testData/tqdc/p8.df deleted file mode 100644 index e5350d06ebd4f11ab8ab68af2fa1ad7c54f66495..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6636 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 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/scenario b/numass-data-proto/src/test/resources/testData/tqdc/scenario new file mode 100644 index 0000000..e69de29 diff --git a/numass-data-proto/src/test/resources/testData/tqdc/voltage b/numass-data-proto/src/test/resources/testData/tqdc/voltage new file mode 100644 index 0000000000000000000000000000000000000000..f0ac61ad5df050b81f7cddbf1285340335e56761 GIT binary patch literal 81351 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