fixes imports
This commit is contained in:
parent
29d9bd6a72
commit
d6a1f02a0d
@ -13,7 +13,7 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val dataforgeVersion by extra("0.4.0")
|
val dataforgeVersion by extra("0.4.0")
|
||||||
val kmathVersion by extra("0.3.0-dev-13")
|
val kmathVersion by extra("0.3.0-dev-15")
|
||||||
|
|
||||||
ksciencePublish{
|
ksciencePublish{
|
||||||
vcs("https://mipt-npm.jetbrains.space/p/numass/code/numass/")
|
vcs("https://mipt-npm.jetbrains.space/p/numass/code/numass/")
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package ru.inr.mass.models
|
package ru.inr.mass.models
|
||||||
|
|
||||||
import space.kscience.kmath.expressions.StringSymbol
|
|
||||||
import space.kscience.kmath.expressions.Symbol
|
import space.kscience.kmath.expressions.Symbol
|
||||||
import space.kscience.kmath.expressions.symbol
|
import space.kscience.kmath.expressions.symbol
|
||||||
import kotlin.math.*
|
import kotlin.math.*
|
||||||
@ -162,8 +161,8 @@ public object NumassBeta : DifferentiableKernel {
|
|||||||
// P(rootsterile)+ (1-P)root
|
// P(rootsterile)+ (1-P)root
|
||||||
}
|
}
|
||||||
|
|
||||||
override val x: Symbol = StringSymbol("fs")
|
override val x: Symbol = Symbol("fs")
|
||||||
override val y: Symbol = StringSymbol("eIn")
|
override val y: Symbol = Symbol("eIn")
|
||||||
|
|
||||||
override fun invoke(fs: Double, eIn: Double, arguments: Map<Symbol, Double>): Double {
|
override fun invoke(fs: Double, eIn: Double, arguments: Map<Symbol, Double>): Double {
|
||||||
val e0 = arguments.getValue(e0)
|
val e0 = arguments.getValue(e0)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package ru.inr.mass.models
|
package ru.inr.mass.models
|
||||||
|
|
||||||
import space.kscience.kmath.expressions.DifferentiableExpression
|
|
||||||
import space.kscience.kmath.expressions.Expression
|
import space.kscience.kmath.expressions.Expression
|
||||||
|
import space.kscience.kmath.expressions.SpecialDifferentiableExpression
|
||||||
import space.kscience.kmath.expressions.Symbol
|
import space.kscience.kmath.expressions.Symbol
|
||||||
|
|
||||||
public fun interface Spectrum : Expression<Double> {
|
public fun interface Spectrum : Expression<Double> {
|
||||||
@ -13,7 +13,7 @@ public fun interface Spectrum : Expression<Double> {
|
|||||||
invoke(arguments[abscissa] ?: error("Argument $abscissa not found in arguments"), arguments)
|
invoke(arguments[abscissa] ?: error("Argument $abscissa not found in arguments"), arguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface DifferentiableSpectrum : DifferentiableExpression<Double, Spectrum>, Spectrum
|
public interface DifferentiableSpectrum : SpecialDifferentiableExpression<Double, Spectrum>, Spectrum
|
||||||
|
|
||||||
public fun interface Kernel : Expression<Double> {
|
public fun interface Kernel : Expression<Double> {
|
||||||
public val x: Symbol get() = Symbol.x
|
public val x: Symbol get() = Symbol.x
|
||||||
@ -28,7 +28,7 @@ public fun interface Kernel : Expression<Double> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface DifferentiableKernel : DifferentiableExpression<Double, Kernel>, Kernel
|
public interface DifferentiableKernel : SpecialDifferentiableExpression<Double, Kernel>, Kernel
|
||||||
|
|
||||||
public fun <T> Expression<T>.withDefault(default: Map<Symbol, T>): Expression<T> = Expression { args ->
|
public fun <T> Expression<T>.withDefault(default: Map<Symbol, T>): Expression<T> = Expression { args ->
|
||||||
invoke(default + args)
|
invoke(default + args)
|
||||||
|
@ -93,14 +93,16 @@ public class SterileNeutrinoSpectrum(
|
|||||||
// getHighDensityIntegrator()
|
// getHighDensityIntegrator()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return DoubleField.gaussIntegrator.integrate(u..eMax, generateRanges(
|
return DoubleField.gaussIntegrator.integrate(
|
||||||
u..eMax,
|
u..eMax, generateRanges(
|
||||||
u + 2.0,
|
u..eMax,
|
||||||
u + 7.0,
|
u + 2.0,
|
||||||
u + 15.0,
|
u + 7.0,
|
||||||
u + 30.0,
|
u + 15.0,
|
||||||
*((u + 50)..(u + 6000) step 25.0).toDoubleArray()
|
u + 30.0,
|
||||||
)) { eIn ->
|
*((u + 50)..(u + 6000) step 25.0).toDoubleArray()
|
||||||
|
)
|
||||||
|
) { eIn ->
|
||||||
sumByFSS(eIn, sourceFunction, arguments) * transResFunction(eIn, u, arguments)
|
sumByFSS(eIn, sourceFunction, arguments) * transResFunction(eIn, u, arguments)
|
||||||
}.value
|
}.value
|
||||||
}
|
}
|
||||||
@ -135,14 +137,16 @@ public class SterileNeutrinoSpectrum(
|
|||||||
eIn: Double,
|
eIn: Double,
|
||||||
u: Double,
|
u: Double,
|
||||||
arguments: Map<Symbol, Double>,
|
arguments: Map<Symbol, Double>,
|
||||||
): Double = DoubleField.gaussIntegrator.integrate(u..eIn, generateRanges(
|
): Double = DoubleField.gaussIntegrator.integrate(
|
||||||
u..eIn,
|
u..eIn, generateRanges(
|
||||||
u + 2.0,
|
u..eIn,
|
||||||
u + 7.0,
|
u + 2.0,
|
||||||
u + 15.0,
|
u + 7.0,
|
||||||
u + 30.0,
|
u + 15.0,
|
||||||
*((u + 50)..(u + 6000) step 30.0).toDoubleArray()
|
u + 30.0,
|
||||||
)) { eOut: Double ->
|
*((u + 50)..(u + 6000) step 30.0).toDoubleArray()
|
||||||
|
)
|
||||||
|
) { eOut: Double ->
|
||||||
transFunc(eIn, eOut, arguments) * resolution(eOut, u, arguments)
|
transFunc(eIn, eOut, arguments) * resolution(eOut, u, arguments)
|
||||||
}.value
|
}.value
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
@file:Suppress("EXPERIMENTAL_API_USAGE")
|
||||||
package ru.inr.mass.workspace
|
package ru.inr.mass.workspace
|
||||||
|
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
@ -14,11 +15,13 @@ import space.kscience.kmath.structures.asBuffer
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build an amplitude spectrum
|
* 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) {
|
fun NumassPoint.spectrum(): UnivariateHistogram = UnivariateHistogram.uniform(1.0) {
|
||||||
runBlocking {
|
runBlocking {
|
||||||
events.collect { put(it.amplitude.toDouble()) }
|
events.collect {
|
||||||
|
putValue(it.amplitude.toDouble())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,14 +20,13 @@ import kotlin.streams.toList
|
|||||||
fun readNumassDirectory(path: String): NumassDirectorySet = NUMASS.context.readNumassDirectory(path)
|
fun readNumassDirectory(path: String): NumassDirectorySet = NUMASS.context.readNumassDirectory(path)
|
||||||
|
|
||||||
@OptIn(ExperimentalPathApi::class)
|
@OptIn(ExperimentalPathApi::class)
|
||||||
suspend fun readNumassRepository(path: String): DataTree<NumassDirectorySet> = ActiveDataTree {
|
suspend fun readNumassRepository(path: Path): DataTree<NumassDirectorySet> = ActiveDataTree {
|
||||||
val basePath = Path.of(path)
|
|
||||||
@Suppress("BlockingMethodInNonBlockingContext")
|
@Suppress("BlockingMethodInNonBlockingContext")
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
Files.walk(Path.of(path)).filter {
|
Files.walk(path).filter {
|
||||||
it.isDirectory() && it.resolve("meta").exists()
|
it.isDirectory() && it.resolve("meta").exists()
|
||||||
}.toList().forEach { childPath ->
|
}.toList().forEach { childPath ->
|
||||||
val name = Name(childPath.relativeTo(basePath).map { segment ->
|
val name = Name(childPath.relativeTo(path).map { segment ->
|
||||||
NameToken(segment.fileName.toString())
|
NameToken(segment.fileName.toString())
|
||||||
})
|
})
|
||||||
val value = NUMASS.context.readNumassDirectory(childPath)
|
val value = NUMASS.context.readNumassDirectory(childPath)
|
||||||
@ -36,3 +35,5 @@ suspend fun readNumassRepository(path: String): DataTree<NumassDirectorySet> = A
|
|||||||
}
|
}
|
||||||
//TODO add file watcher
|
//TODO add file watcher
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun readNumassRepository(path: String): DataTree<NumassDirectorySet> = readNumassRepository(Path.of(path))
|
||||||
|
@ -10,23 +10,22 @@ import space.kscience.dataforge.values.double
|
|||||||
import space.kscience.kmath.histogram.UnivariateHistogram
|
import space.kscience.kmath.histogram.UnivariateHistogram
|
||||||
import space.kscience.kmath.histogram.center
|
import space.kscience.kmath.histogram.center
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
|
import space.kscience.kmath.operations.asIterable
|
||||||
import space.kscience.kmath.structures.Buffer
|
import space.kscience.kmath.structures.Buffer
|
||||||
import space.kscience.kmath.structures.DoubleBuffer
|
import space.kscience.kmath.structures.DoubleBuffer
|
||||||
import space.kscience.kmath.structures.asIterable
|
|
||||||
import space.kscience.plotly.*
|
import space.kscience.plotly.*
|
||||||
|
import space.kscience.plotly.models.Scatter
|
||||||
import space.kscience.plotly.models.Trace
|
import space.kscience.plotly.models.Trace
|
||||||
import space.kscience.plotly.models.TraceValues
|
import space.kscience.plotly.models.TraceValues
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plot a kmath histogram
|
||||||
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
fun Trace.fromSpectrum(histogram: UnivariateHistogram) {
|
fun Plot.histogram(histogram: UnivariateHistogram, block: Scatter.() -> Unit): Trace = scatter {
|
||||||
x.numbers = histogram.bins.map { it.domain.center }
|
x.numbers = histogram.bins.map { it.domain.center }
|
||||||
y.numbers = histogram.bins.map { it.value }
|
y.numbers = histogram.bins.map { it.value }
|
||||||
}
|
block()
|
||||||
|
|
||||||
@OptIn(UnstableKMathAPI::class)
|
|
||||||
fun Plot.spectrum(name: String, histogram: UnivariateHistogram): Trace = scatter {
|
|
||||||
this.name = name
|
|
||||||
fromSpectrum(histogram)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Plot.amplitudeSpectrum(
|
fun Plot.amplitudeSpectrum(
|
||||||
@ -35,7 +34,9 @@ fun Plot.amplitudeSpectrum(
|
|||||||
range: IntRange = 0..2000,
|
range: IntRange = 0..2000,
|
||||||
name: String = point.toString(),
|
name: String = point.toString(),
|
||||||
): Trace = scatter {
|
): Trace = scatter {
|
||||||
spectrum(name, point.spectrum().reShape(binSize, range))
|
histogram(point.spectrum().reShape(binSize, range)) {
|
||||||
|
this.name = name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,6 +60,7 @@ fun Plotly.numassDirectory(set: NumassDirectorySet, binSize: Int = 20, range: In
|
|||||||
amplitudeSpectrum(it, binSize, range)
|
amplitudeSpectrum(it, binSize, range)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set.getHvData()?.let { entries ->
|
set.getHvData()?.let { entries ->
|
||||||
h2 {
|
h2 {
|
||||||
+"HV"
|
+"HV"
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package ru.inr.mass
|
package ru.inr.mass
|
||||||
|
|
||||||
import ru.inr.mass.models.*
|
import ru.inr.mass.models.*
|
||||||
import space.kscience.kmath.misc.Symbol
|
import space.kscience.kmath.expressions.Symbol
|
||||||
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import kotlin.math.sqrt
|
import kotlin.math.sqrt
|
||||||
|
Loading…
Reference in New Issue
Block a user