Compare commits

...

3 Commits

Author SHA1 Message Date
bc77af263b merge with dev (update to Kotlin 1.9.0) 2023-10-09 15:29:00 +03:00
7659bc41a0 Merge remote-tracking branch 'origin/dev' into feature/fit-analysis
# Conflicts:
#	numass-data-proto/src/gen/kotlin/ru/inr/mass/data/proto/Point.kt
#	numass-workspace/src/main/kotlin/ru/inr/mass/scripts/fit.kt
2023-10-09 14:55:39 +03:00
b7618cc08f update build versions 2023-10-09 13:35:39 +03:00
22 changed files with 231 additions and 198 deletions

View File

@ -13,12 +13,12 @@ allprojects {
}
group = "ru.inr.mass"
version = "0.1.4-dev-1"
version = "0.1.4-dev-2"
}
val dataforgeVersion by extra("0.6.0-dev-15")
val dataforgeVersion by extra("0.6.2")
val tablesVersion: String by extra("0.2.0-dev-3")
val kmathVersion by extra("0.3.1-dev-9")
val kmathVersion by extra("0.3.1")
val visionForgeVersion: String by rootProject.extra("0.3.0-dev-6")

View File

@ -5,12 +5,11 @@
kotlin.code.style=official
kotlin.mpp.stability.nowarn=true
kotlin.jupyter.add.scanner=false
kotlin.js.compiler=ir
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-XX:MaxMetaspaceSize=1G
toolsVersion=0.13.3-kotlin-1.7.20
compose.version=1.2.2
toolsVersion=0.14.10-kotlin-1.9.0
compose.version=1.5.1

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -8,7 +8,9 @@ val dataforgeVersion: String by rootProject.extra
val kmathVersion: String by rootProject.extra
val tablesVersion: String by rootProject.extra
kotlin.sourceSets {
kscience {
jvm()
js()
commonMain {
dependencies {
api(projects.numass.numassDataModel)

View File

@ -6,7 +6,11 @@ plugins {
val dataforgeVersion: String by rootProject.extra
kotlin.sourceSets {
kscience{
jvm()
js()
useSerialization()
commonMain {
dependencies {
api("space.kscience:dataforge-context:$dataforgeVersion")
@ -14,15 +18,14 @@ kotlin.sourceSets {
api("org.jetbrains.kotlinx:kotlinx-datetime:${space.kscience.gradle.KScienceVersions.dateTimeVersion}")
}
}
jvmMain{
}
kotlin.sourceSets{
getByName("jvmMain"){
dependencies{
api("ch.qos.logback:logback-classic:1.2.3")
}
}
}
kscience{
useSerialization()
}

View File

@ -1,6 +1,6 @@
plugins {
id("space.kscience.gradle.jvm")
id("com.squareup.wire") version "4.4.1"
id("com.squareup.wire") version "4.9.1"
`maven-publish`
}

View File

@ -8,9 +8,9 @@ import com.squareup.wire.ProtoAdapter
import com.squareup.wire.ProtoReader
import com.squareup.wire.ProtoWriter
import com.squareup.wire.ReverseProtoWriter
import com.squareup.wire.Syntax
import com.squareup.wire.Syntax.PROTO_3
import com.squareup.wire.WireField
import com.squareup.wire.`internal`.JvmField
import com.squareup.wire.`internal`.immutableCopyOf
import com.squareup.wire.`internal`.redactElements
import kotlin.Any
@ -22,9 +22,7 @@ import kotlin.Int
import kotlin.Long
import kotlin.Nothing
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmField
import okio.ByteString
public class Point(
@ -38,6 +36,7 @@ public class Point(
tag = 1,
adapter = "ru.inr.mass.data.proto.Point${'$'}Channel#ADAPTER",
label = WireField.Label.REPEATED,
schemaIndex = 0,
)
public val channels: List<Channel> = immutableCopyOf("channels", channels)
@ -45,10 +44,10 @@ public class Point(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")
public override fun equals(other: Any?): Boolean {
override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is Point) return false
if (unknownFields != other.unknownFields) return false
@ -56,7 +55,7 @@ public class Point(
return true
}
public override fun hashCode(): Int {
override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
@ -66,7 +65,7 @@ public class Point(
return result
}
public override fun toString(): String {
override fun toString(): String {
val result = mutableListOf<String>()
if (channels.isNotEmpty()) result += """channels=$channels"""
return result.joinToString(prefix = "Point{", separator = ", ", postfix = "}")
@ -85,23 +84,23 @@ public class Point(
null,
"numass-proto.proto"
) {
public override fun encodedSize(`value`: Point): Int {
override fun encodedSize(`value`: Point): Int {
var size = value.unknownFields.size
size += Channel.ADAPTER.asRepeated().encodedSizeWithTag(1, value.channels)
return size
}
public override fun encode(writer: ProtoWriter, `value`: Point): Unit {
override fun encode(writer: ProtoWriter, `value`: Point) {
Channel.ADAPTER.asRepeated().encodeWithTag(writer, 1, value.channels)
writer.writeBytes(value.unknownFields)
}
public override fun encode(writer: ReverseProtoWriter, `value`: Point): Unit {
override fun encode(writer: ReverseProtoWriter, `value`: Point) {
writer.writeBytes(value.unknownFields)
Channel.ADAPTER.asRepeated().encodeWithTag(writer, 1, value.channels)
}
public override fun decode(reader: ProtoReader): Point {
override fun decode(reader: ProtoReader): Point {
val channels = mutableListOf<Channel>()
val unknownFields = reader.forEachTag { tag ->
when (tag) {
@ -115,7 +114,7 @@ public class Point(
)
}
public override fun redact(`value`: Point): Point = value.copy(
override fun redact(`value`: Point): Point = value.copy(
channels = value.channels.redactElements(Channel.ADAPTER),
unknownFields = ByteString.EMPTY
)
@ -135,6 +134,7 @@ public class Point(
tag = 1,
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.OMIT_IDENTITY,
schemaIndex = 0,
)
public val id: Long = 0L,
blocks: List<Block> = emptyList(),
@ -147,6 +147,7 @@ public class Point(
tag = 2,
adapter = "ru.inr.mass.data.proto.Point${'$'}Channel${'$'}Block#ADAPTER",
label = WireField.Label.REPEATED,
schemaIndex = 1,
)
public val blocks: List<Block> = immutableCopyOf("blocks", blocks)
@ -154,10 +155,10 @@ public class Point(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")
public override fun equals(other: Any?): Boolean {
override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is Channel) return false
if (unknownFields != other.unknownFields) return false
@ -166,7 +167,7 @@ public class Point(
return true
}
public override fun hashCode(): Int {
override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
@ -177,7 +178,7 @@ public class Point(
return result
}
public override fun toString(): String {
override fun toString(): String {
val result = mutableListOf<String>()
result += """id=$id"""
if (blocks.isNotEmpty()) result += """blocks=$blocks"""
@ -200,26 +201,26 @@ public class Point(
null,
"numass-proto.proto"
) {
public override fun encodedSize(`value`: Channel): Int {
override fun encodedSize(`value`: Channel): Int {
var size = value.unknownFields.size
if (value.id != 0L) size += ProtoAdapter.UINT64.encodedSizeWithTag(1, value.id)
size += Block.ADAPTER.asRepeated().encodedSizeWithTag(2, value.blocks)
return size
}
public override fun encode(writer: ProtoWriter, `value`: Channel): Unit {
override fun encode(writer: ProtoWriter, `value`: Channel) {
if (value.id != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 1, value.id)
Block.ADAPTER.asRepeated().encodeWithTag(writer, 2, value.blocks)
writer.writeBytes(value.unknownFields)
}
public override fun encode(writer: ReverseProtoWriter, `value`: Channel): Unit {
override fun encode(writer: ReverseProtoWriter, `value`: Channel) {
writer.writeBytes(value.unknownFields)
Block.ADAPTER.asRepeated().encodeWithTag(writer, 2, value.blocks)
if (value.id != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 1, value.id)
}
public override fun decode(reader: ProtoReader): Channel {
override fun decode(reader: ProtoReader): Channel {
var id: Long = 0L
val blocks = mutableListOf<Block>()
val unknownFields = reader.forEachTag { tag ->
@ -236,7 +237,7 @@ public class Point(
)
}
public override fun redact(`value`: Channel): Channel = value.copy(
override fun redact(`value`: Channel): Channel = value.copy(
blocks = value.blocks.redactElements(Block.ADAPTER),
unknownFields = ByteString.EMPTY
)
@ -256,6 +257,7 @@ public class Point(
tag = 1,
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.OMIT_IDENTITY,
schemaIndex = 0,
)
public val time: Long = 0L,
frames: List<Frame> = emptyList(),
@ -266,6 +268,7 @@ public class Point(
tag = 3,
adapter = "ru.inr.mass.data.proto.Point${'$'}Channel${'$'}Block${'$'}Events#ADAPTER",
label = WireField.Label.OMIT_IDENTITY,
schemaIndex = 2,
)
public val events: Events? = null,
/**
@ -275,6 +278,7 @@ public class Point(
tag = 4,
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.OMIT_IDENTITY,
schemaIndex = 3,
)
public val length: Long = 0L,
/**
@ -285,6 +289,7 @@ public class Point(
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.OMIT_IDENTITY,
jsonName = "binSize",
schemaIndex = 4,
)
public val bin_size: Long = 0L,
unknownFields: ByteString = ByteString.EMPTY,
@ -296,6 +301,7 @@ public class Point(
tag = 2,
adapter = "ru.inr.mass.data.proto.Point${'$'}Channel${'$'}Block${'$'}Frame#ADAPTER",
label = WireField.Label.REPEATED,
schemaIndex = 1,
)
public val frames: List<Frame> = immutableCopyOf("frames", frames)
@ -303,10 +309,10 @@ public class Point(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")
public override fun equals(other: Any?): Boolean {
override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is Block) return false
if (unknownFields != other.unknownFields) return false
@ -318,7 +324,7 @@ public class Point(
return true
}
public override fun hashCode(): Int {
override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
@ -332,7 +338,7 @@ public class Point(
return result
}
public override fun toString(): String {
override fun toString(): String {
val result = mutableListOf<String>()
result += """time=$time"""
if (frames.isNotEmpty()) result += """frames=$frames"""
@ -361,7 +367,7 @@ public class Point(
null,
"numass-proto.proto"
) {
public override fun encodedSize(`value`: Block): Int {
override fun encodedSize(`value`: Block): Int {
var size = value.unknownFields.size
if (value.time != 0L) size += ProtoAdapter.UINT64.encodedSizeWithTag(1, value.time)
size += Frame.ADAPTER.asRepeated().encodedSizeWithTag(2, value.frames)
@ -372,7 +378,7 @@ public class Point(
return size
}
public override fun encode(writer: ProtoWriter, `value`: Block): Unit {
override fun encode(writer: ProtoWriter, `value`: Block) {
if (value.time != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 1, value.time)
Frame.ADAPTER.asRepeated().encodeWithTag(writer, 2, value.frames)
if (value.events != null) Events.ADAPTER.encodeWithTag(writer, 3, value.events)
@ -381,7 +387,7 @@ public class Point(
writer.writeBytes(value.unknownFields)
}
public override fun encode(writer: ReverseProtoWriter, `value`: Block): Unit {
override fun encode(writer: ReverseProtoWriter, `value`: Block) {
writer.writeBytes(value.unknownFields)
if (value.bin_size != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 5, value.bin_size)
if (value.length != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 4, value.length)
@ -390,7 +396,7 @@ public class Point(
if (value.time != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 1, value.time)
}
public override fun decode(reader: ProtoReader): Block {
override fun decode(reader: ProtoReader): Block {
var time: Long = 0L
val frames = mutableListOf<Frame>()
var events: Events? = null
@ -416,7 +422,7 @@ public class Point(
)
}
public override fun redact(`value`: Block): Block = value.copy(
override fun redact(`value`: Block): Block = value.copy(
frames = value.frames.redactElements(Frame.ADAPTER),
events = value.events?.let(Events.ADAPTER::redact),
unknownFields = ByteString.EMPTY
@ -437,6 +443,7 @@ public class Point(
tag = 1,
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.OMIT_IDENTITY,
schemaIndex = 0,
)
public val time: Long = 0L,
/**
@ -447,6 +454,7 @@ public class Point(
adapter = "com.squareup.wire.ProtoAdapter#BYTES",
label = WireField.Label.OMIT_IDENTITY,
declaredName = "data",
schemaIndex = 1,
)
public val data_: ByteString = ByteString.EMPTY,
unknownFields: ByteString = ByteString.EMPTY,
@ -455,10 +463,10 @@ public class Point(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")
public override fun equals(other: Any?): Boolean {
override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is Frame) return false
if (unknownFields != other.unknownFields) return false
@ -467,7 +475,7 @@ public class Point(
return true
}
public override fun hashCode(): Int {
override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
@ -478,7 +486,7 @@ public class Point(
return result
}
public override fun toString(): String {
override fun toString(): String {
val result = mutableListOf<String>()
result += """time=$time"""
result += """data_=$data_"""
@ -501,7 +509,7 @@ public class Point(
null,
"numass-proto.proto"
) {
public override fun encodedSize(`value`: Frame): Int {
override fun encodedSize(`value`: Frame): Int {
var size = value.unknownFields.size
if (value.time != 0L) size += ProtoAdapter.UINT64.encodedSizeWithTag(1, value.time)
if (value.data_ != ByteString.EMPTY) size += ProtoAdapter.BYTES.encodedSizeWithTag(2,
@ -509,21 +517,21 @@ public class Point(
return size
}
public override fun encode(writer: ProtoWriter, `value`: Frame): Unit {
override fun encode(writer: ProtoWriter, `value`: Frame) {
if (value.time != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 1, value.time)
if (value.data_ != ByteString.EMPTY) ProtoAdapter.BYTES.encodeWithTag(writer, 2,
value.data_)
writer.writeBytes(value.unknownFields)
}
public override fun encode(writer: ReverseProtoWriter, `value`: Frame): Unit {
override fun encode(writer: ReverseProtoWriter, `value`: Frame) {
writer.writeBytes(value.unknownFields)
if (value.data_ != ByteString.EMPTY) ProtoAdapter.BYTES.encodeWithTag(writer, 2,
value.data_)
if (value.time != 0L) ProtoAdapter.UINT64.encodeWithTag(writer, 1, value.time)
}
public override fun decode(reader: ProtoReader): Frame {
override fun decode(reader: ProtoReader): Frame {
var time: Long = 0L
var data_: ByteString = ByteString.EMPTY
val unknownFields = reader.forEachTag { tag ->
@ -540,7 +548,7 @@ public class Point(
)
}
public override fun redact(`value`: Frame): Frame = value.copy(
override fun redact(`value`: Frame): Frame = value.copy(
unknownFields = ByteString.EMPTY
)
}
@ -566,6 +574,7 @@ public class Point(
tag = 1,
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.PACKED,
schemaIndex = 0,
)
public val times: List<Long> = immutableCopyOf("times", times)
@ -576,6 +585,7 @@ public class Point(
tag = 2,
adapter = "com.squareup.wire.ProtoAdapter#UINT64",
label = WireField.Label.PACKED,
schemaIndex = 1,
)
public val amplitudes: List<Long> = immutableCopyOf("amplitudes", amplitudes)
@ -583,10 +593,10 @@ public class Point(
message = "Shouldn't be used in Kotlin",
level = DeprecationLevel.HIDDEN,
)
public override fun newBuilder(): Nothing = throw
override fun newBuilder(): Nothing = throw
AssertionError("Builders are deprecated and only available in a javaInterop build; see https://square.github.io/wire/wire_compiler/#kotlin")
public override fun equals(other: Any?): Boolean {
override fun equals(other: Any?): Boolean {
if (other === this) return true
if (other !is Events) return false
if (unknownFields != other.unknownFields) return false
@ -595,7 +605,7 @@ public class Point(
return true
}
public override fun hashCode(): Int {
override fun hashCode(): Int {
var result = super.hashCode
if (result == 0) {
result = unknownFields.hashCode()
@ -606,7 +616,7 @@ public class Point(
return result
}
public override fun toString(): String {
override fun toString(): String {
val result = mutableListOf<String>()
if (times.isNotEmpty()) result += """times=$times"""
if (amplitudes.isNotEmpty()) result += """amplitudes=$amplitudes"""
@ -629,43 +639,61 @@ public class Point(
null,
"numass-proto.proto"
) {
public override fun encodedSize(`value`: Events): Int {
override fun encodedSize(`value`: Events): Int {
var size = value.unknownFields.size
size += ProtoAdapter.UINT64.asPacked().encodedSizeWithTag(1, value.times)
size += ProtoAdapter.UINT64.asPacked().encodedSizeWithTag(2, value.amplitudes)
return size
}
public override fun encode(writer: ProtoWriter, `value`: Events): Unit {
override fun encode(writer: ProtoWriter, `value`: Events) {
ProtoAdapter.UINT64.asPacked().encodeWithTag(writer, 1, value.times)
ProtoAdapter.UINT64.asPacked().encodeWithTag(writer, 2, value.amplitudes)
writer.writeBytes(value.unknownFields)
}
public override fun encode(writer: ReverseProtoWriter, `value`: Events): Unit {
override fun encode(writer: ReverseProtoWriter, `value`: Events) {
writer.writeBytes(value.unknownFields)
ProtoAdapter.UINT64.asPacked().encodeWithTag(writer, 2, value.amplitudes)
ProtoAdapter.UINT64.asPacked().encodeWithTag(writer, 1, value.times)
}
public override fun decode(reader: ProtoReader): Events {
val times = mutableListOf<Long>()
val amplitudes = mutableListOf<Long>()
override fun decode(reader: ProtoReader): Events {
var times: MutableList<Long>? = null
var amplitudes: MutableList<Long>? = null
val unknownFields = reader.forEachTag { tag ->
when (tag) {
1 -> times.add(ProtoAdapter.UINT64.decode(reader))
2 -> amplitudes.add(ProtoAdapter.UINT64.decode(reader))
1 -> {
if (times == null) {
val minimumByteSize = 1
val initialCapacity = (reader.nextFieldMinLengthInBytes() / minimumByteSize)
.coerceAtMost(Int.MAX_VALUE.toLong())
.toInt()
times = ArrayList(initialCapacity)
}
times!!.add(ProtoAdapter.UINT64.decode(reader))
}
2 -> {
if (amplitudes == null) {
val minimumByteSize = 1
val initialCapacity = (reader.nextFieldMinLengthInBytes() / minimumByteSize)
.coerceAtMost(Int.MAX_VALUE.toLong())
.toInt()
amplitudes = ArrayList(initialCapacity)
}
amplitudes!!.add(ProtoAdapter.UINT64.decode(reader))
}
else -> reader.readUnknownField(tag)
}
}
return Events(
times = times,
amplitudes = amplitudes,
times = times ?: listOf(),
amplitudes = amplitudes ?: listOf(),
unknownFields = unknownFields
)
}
public override fun redact(`value`: Events): Events = value.copy(
override fun redact(`value`: Events): Events = value.copy(
unknownFields = ByteString.EMPTY
)
}

View File

@ -20,7 +20,6 @@ import java.nio.file.Path
import kotlin.io.path.exists
import kotlin.io.path.isDirectory
import kotlin.io.path.relativeTo
import kotlin.reflect.KClass
public class NumassProtoPlugin : AbstractPlugin() {
public val io: IOPlugin by require(IOPlugin)
@ -35,7 +34,6 @@ public class NumassProtoPlugin : AbstractPlugin() {
public companion object : PluginFactory<NumassProtoPlugin> {
override fun build(context: Context, meta: Meta): NumassProtoPlugin = NumassProtoPlugin()
override val tag: PluginTag = PluginTag("numass-proto", group = "ru.inr.mass")
override val type: KClass<out NumassProtoPlugin> = NumassProtoPlugin::class
}
}

View File

@ -39,24 +39,8 @@ public class TaggedNumassEnvelopeFormat(private val io: IOPlugin) : EnvelopeForm
writeRawString(END_SEQUENCE)
}
override fun writeEnvelope(
output: Output,
envelope: Envelope,
metaFormatFactory: MetaFormatFactory,
formatMeta: Meta,
) {
override fun writeObject(output: Output, obj: Envelope) {
error("Don't write legacy formats")
// val metaFormat = metaFormatFactory.invoke(formatMeta, io.context)
// val metaBytes = metaFormat.toBinary(envelope.meta)
// val actualSize: ULong = (envelope.data?.size ?: 0).toULong()
// val tag = Tag(metaFormatFactory.key, metaBytes.size.toUInt() + 2u, actualSize)
// output.writeBinary(tag.toBinary())
// output.writeBinary(metaBytes)
// output.writeRawString("\r\n")
// envelope.data?.let {
// output.writeBinary(it)
// }
// output.flush()
}
/**
@ -68,31 +52,30 @@ public class TaggedNumassEnvelopeFormat(private val io: IOPlugin) : EnvelopeForm
override fun readObject(input: Input): Envelope {
val tag = input.readTag()
val metaFormat = io.resolveMetaFormat(tag.metaFormatKey)
?: error("Meta format with key ${tag.metaFormatKey} not found")
val metaFormat = io.resolveMetaFormat(tag.metaFormatKey) ?: JsonMetaFormat
val meta: Meta = metaFormat.readObjectFrom(input.readBinary(tag.metaSize.toInt()))
val data = input.readBinary(tag.dataSize.toInt())
return SimpleEnvelope(meta, data)
}
override fun readPartial(input: Input): PartialEnvelope {
val tag = input.readTag()
val metaFormat = if (tag.metaFormatKey == 1.toShort()) {
JsonMetaFormat
} else {
io.resolveMetaFormat(tag.metaFormatKey)
?: error("Meta format with key ${tag.metaFormatKey} not found")
}
val meta: Meta = metaFormat.readObjectFrom(input.readBinary(tag.metaSize.toInt()))
return PartialEnvelope(meta, 30 + tag.metaSize.toInt(), tag.dataSize)
return Envelope(meta, data)
}
//
// override fun readPartial(input: Input): PartialEnvelope {
// val tag = input.readTag()
//
// val metaFormat = if (tag.metaFormatKey == 1.toShort()) {
// JsonMetaFormat
// } else {
// io.resolveMetaFormat(tag.metaFormatKey)
// ?: error("Meta format with key ${tag.metaFormatKey} not found")
// }
//
// val meta: Meta = metaFormat.readObjectFrom(input.readBinary(tag.metaSize.toInt()))
//
//
// return PartialEnvelope(meta, 30 + tag.metaSize.toInt(), tag.dataSize)
// }
private data class Tag(
val metaFormatKey: Short,
@ -149,23 +132,11 @@ public class TaggedNumassEnvelopeFormat(private val io: IOPlugin) : EnvelopeForm
private val default by lazy { invoke() }
override fun readPartial(input: Input): PartialEnvelope =
default.run { readPartial(input) }
override fun writeEnvelope(
output: Output,
envelope: Envelope,
metaFormatFactory: MetaFormatFactory,
formatMeta: Meta,
): Unit = default.run {
writeEnvelope(
output,
envelope,
metaFormatFactory,
formatMeta
)
override fun writeObject(output: Output, obj: Envelope) {
error("Don't write legacy formats")
}
override fun readObject(input: Input): Envelope = default.readObject(input)
}
}

View File

@ -8,62 +8,41 @@ val visionForgeVersion: String by rootProject.extra
val production: Boolean by rootProject.extra(true)
kotlin {
js(IR) {
browser {
webpackTask {
this.outputFileName = "js/numass-web.js"
}
}
binaries.executable()
kscience {
fullStack("js/numass-web.js")
useSerialization {
json()
}
sourceSets {
useContextReceivers()
useKtor()
commonMain {
dependencies {
implementation(project(":numass-data-model"))
implementation("space.kscience:visionforge-core:$visionForgeVersion")
implementation("space.kscience:visionforge-plotly:$visionForgeVersion")
implementation(compose.runtime)
}
}
jvmMain {
}
kotlin{
sourceSets{
getByName("jvmMain"){
dependencies{
implementation(compose.runtime)
implementation(project(":numass-data-proto"))
implementation("io.ktor:ktor-server-cio:2.1.3")
implementation("io.ktor:ktor-server-html-builder-jvm:2.1.3")
implementation("io.ktor:ktor-server-cio")
implementation("io.ktor:ktor-server-html-builder")
implementation("space.kscience:visionforge-plotly:$visionForgeVersion")
}
}
jsMain{
getByName("jsMain"){
dependencies{
implementation(compose.web.core)
}
}
}
}
afterEvaluate {
val distributionTask = if (production) {
tasks.getByName("jsBrowserDistribution")
} else {
tasks.getByName("jsBrowserDevelopmentExecutableDistribution")
}
tasks.getByName<ProcessResources>("jvmProcessResources") {
dependsOn(distributionTask)
from(distributionTask)
include("**/*.js")
if (production) {
include("**/*.map")
implementation(compose.html.core)
}
}
}
kscience {
useSerialization {
json()
}
withContextReceivers()
}

View File

@ -9,7 +9,6 @@ import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.Meta
import space.kscience.visionforge.Vision
import space.kscience.visionforge.VisionPlugin
import kotlin.reflect.KClass
public class NumassCommonPlugin(meta: Meta = Meta.EMPTY) : VisionPlugin(meta) {
override val tag: PluginTag get() = Companion.tag
@ -18,7 +17,6 @@ public class NumassCommonPlugin(meta: Meta = Meta.EMPTY) : VisionPlugin(meta) {
public companion object : PluginFactory<NumassCommonPlugin> {
override val tag: PluginTag = PluginTag("numass.common", "ru.inr.mass")
override val type: KClass<NumassCommonPlugin> = NumassCommonPlugin::class
override fun build(context: Context, meta: Meta): NumassCommonPlugin = NumassCommonPlugin()

View File

@ -18,7 +18,6 @@ import space.kscience.visionforge.ElementVisionRenderer
import space.kscience.visionforge.Vision
import space.kscience.visionforge.VisionClient
import space.kscience.visionforge.plotly.PlotlyPlugin
import kotlin.reflect.KClass
public class NumassJsPlugin : AbstractPlugin(), ElementVisionRenderer {
public val client: VisionClient by require(VisionClient)
@ -83,8 +82,6 @@ public class NumassJsPlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<NumassJsPlugin> {
override val tag: PluginTag = PluginTag("numass.js", "ru.inr.mass")
override val type: KClass<NumassJsPlugin> = NumassJsPlugin::class
override fun build(context: Context, meta: Meta): NumassJsPlugin = NumassJsPlugin()
}

View File

@ -7,7 +7,9 @@ plugins {
val dataforgeVersion: String by rootProject.extra
val kmathVersion: String by rootProject.extra
kotlin.sourceSets {
kscience{
jvm()
js()
commonMain {
dependencies {
api("space.kscience:dataforge-context:$dataforgeVersion")
@ -15,7 +17,10 @@ kotlin.sourceSets {
api("space.kscience:kmath-functions:$kmathVersion")
}
}
jvmMain {
}
kotlin.sourceSets{
getByName("jvmMain"){
dependencies {
api("space.kscience:kmath-commons:$kmathVersion")
api("ch.qos.logback:logback-classic:1.2.3")

View File

@ -15,10 +15,10 @@
*/
package ru.inr.mass.models
import space.kscience.kmath.UnstableKMathAPI
import space.kscience.kmath.data.ColumnarData
import space.kscience.kmath.expressions.Symbol
import space.kscience.kmath.expressions.symbol
import space.kscience.kmath.misc.UnstableKMathAPI
import space.kscience.kmath.structures.Buffer

View File

@ -33,7 +33,7 @@ public class NBkgSpectrum(public val source: Spectrum) : DifferentiableSpectrum
symbols.isEmpty() -> this
symbols.size == 1 -> when (symbols.first()) {
norm -> Spectrum { x, arguments -> source(x, arguments) }
bkg -> Spectrum { x, _ -> 1.0 }
bkg -> Spectrum { _, _ -> 1.0 }
else -> (source as? DifferentiableSpectrum)?.derivativeOrNull(symbols)?.let { NBkgSpectrum(it) }
}
else -> null

View File

@ -2,6 +2,7 @@ plugins {
id("space.kscience.gradle.jvm")
id("com.github.johnrengelman.shadow") version "7.1.2"
`maven-publish`
// application
}
kotlin {
@ -9,7 +10,7 @@ kotlin {
}
val dataforgeVersion: String by rootProject.extra
val visionForgeVersion: String by rootProject.extra
val plotlyKtVersion = "0.6.0"
val kmathVersion: String by rootProject.extra
val tablesVersion: String by rootProject.extra
@ -21,9 +22,15 @@ dependencies {
implementation("space.kscience:kmath-jupyter:$kmathVersion")
implementation("space.kscience:tables-kt:$tablesVersion")
implementation("space.kscience:visionforge-plotly:$visionForgeVersion")
implementation("space.kscience:plotlykt-core:$plotlyKtVersion")
implementation("com.github.ajalt.clikt:clikt:4.2.1")
}
kscience{
jupyterLibrary("ru.inr.mass.notebook.NumassJupyter")
}
//application {
// mainClass.set("ru.inr.mass.scripts.Spectrum_serverKt")
//}

View File

@ -3,12 +3,12 @@ package ru.inr.mass.scripts
import ru.inr.mass.models.*
import ru.inr.mass.workspace.buffer
import ru.inr.mass.workspace.fitWith
import space.kscience.kmath.UnstableKMathAPI
import space.kscience.kmath.data.XYColumnarData
import space.kscience.kmath.data.XYErrorColumnarData
import space.kscience.kmath.data.indices
import space.kscience.kmath.expressions.Symbol
import space.kscience.kmath.expressions.derivative
import space.kscience.kmath.misc.UnstableKMathAPI
import space.kscience.kmath.operations.asSequence
import space.kscience.kmath.optimization.*
import space.kscience.kmath.real.step
@ -18,6 +18,7 @@ import space.kscience.plotly.models.ScatterMode
import java.io.File
import kotlin.math.pow
@OptIn(UnstableKMathAPI::class)
fun parse(filename: String): XYErrorColumnarData<Double, Double, Double> {
val x: MutableList<Double> = mutableListOf()
val y: MutableList<Double> = mutableListOf()
@ -37,8 +38,12 @@ fun parse(filename: String): XYErrorColumnarData<Double, Double, Double> {
)
}
@OptIn(UnstableKMathAPI::class)
//@OptIn(UnstableKMathAPI::class)
@UnstableKMathAPI
suspend fun main() {
// val fitParams = FitParams().main(args);
val spectrum: NBkgSpectrum = SterileNeutrinoSpectrum(
// fss = FSS.default,
transmission = NumassTransmission(NumassTransmission.trapFunction),
@ -64,7 +69,7 @@ suspend fun main() {
//
// val strategy = (12000.0..19000.0 step 100.0).asSequence().associateWith { timePerPoint }
val data = parse("/home/sabina/Numass/Fit/Data/03.10.2023")
val data = parse("/home/chernov/projects/notebooks/manual-fit/06.10.2023")
val fit: XYFit = data.fitWith(
optimizer = QowOptimizer,
@ -74,7 +79,7 @@ suspend fun main() {
OptimizationIterations(20)
)
//println("Chi squared/dof: ${fit.chiSquaredOrNull}/${fit.dof}")
println(fit.resultPoint)
Plotly.page {
plot {
@ -92,7 +97,7 @@ suspend fun main() {
mode = ScatterMode.lines
x.buffer = 12000.0..18600.0 step 50.0
y.numbers = x.doubles.map { spectrum(it, args + fit.resultPoint) }
File("/home/sabina/Numass/Fit/trap1").printWriter().use { out ->
File("/home/chernov/projects/notebooks/manual-fit/04.10.2023-fit").printWriter().use { out ->
y.numbers.forEach {
out.println(it)
}

View File

@ -0,0 +1,44 @@
package ru.inr.mass.scripts
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking
import ru.inr.mass.models.*
import space.kscience.kmath.expressions.Symbol
import space.kscience.kmath.operations.toTypedArray
import space.kscience.kmath.real.plus
import space.kscience.kmath.real.step
fun main(args: Array<String>) {
val cli = args.map { it.toDouble() }
val args: Map<Symbol, Double> = mapOf(
NBkgSpectrum.norm to cli[0],
NBkgSpectrum.bkg to cli[1],
NumassBeta.mnu2 to cli[2],
NumassBeta.e0 to cli[3],
NumassBeta.msterile2 to cli[4],
NumassBeta.u2 to cli[5],
NumassTransmission.thickness to cli[6],
NumassTransmission.trap to cli[7]
)
runBlocking(Dispatchers.Default) {
val range = (12000.0..16000.0 step 50.0).toTypedArray()
.plus((16100.0..18600.0 step 100.0).toTypedArray());
val handles = range.map {
async(Dispatchers.Default) {
val spectrum: NBkgSpectrum = SterileNeutrinoSpectrum(
transmission = NumassTransmission(NumassTransmission.trapFunction),
).withNBkg()
val res = spectrum.invoke(it, args)
return@async res
}
}
val out = handles.map { it.await() }
println(out.joinToString("\n"))
}
}

View File

@ -18,7 +18,6 @@ import space.kscience.dataforge.workspace.WorkspacePlugin
import space.kscience.dataforge.workspace.pipeFrom
import space.kscience.dataforge.workspace.task
import space.kscience.tables.Table
import kotlin.reflect.KClass
class NumassWorkspacePlugin : WorkspacePlugin() {
override val tag: PluginTag get() = Companion.tag
@ -128,7 +127,6 @@ class NumassWorkspacePlugin : WorkspacePlugin() {
companion object : PluginFactory<NumassWorkspacePlugin> {
override val tag: PluginTag = PluginTag("numass", "ru.mipt.npm")
override val type: KClass<out NumassWorkspacePlugin> = NumassWorkspacePlugin::class
override fun build(context: Context, meta: Meta): NumassWorkspacePlugin = NumassWorkspacePlugin()
}
}

View File

@ -3,13 +3,13 @@
package ru.inr.mass.workspace
import ru.inr.mass.models.Spectrum
import space.kscience.kmath.UnstableKMathAPI
import space.kscience.kmath.data.XYColumnarData
import space.kscience.kmath.data.XYErrorColumnarData
import space.kscience.kmath.expressions.DifferentiableExpression
import space.kscience.kmath.expressions.Symbol
import space.kscience.kmath.misc.FeatureSet
import space.kscience.kmath.misc.Loggable
import space.kscience.kmath.misc.UnstableKMathAPI
import space.kscience.kmath.optimization.*
import space.kscience.kmath.random.RandomGenerator
import space.kscience.kmath.samplers.PoissonSampler

View File

@ -12,9 +12,9 @@ import ru.inr.mass.data.proto.HVData
import ru.inr.mass.data.proto.NumassDirectorySet
import space.kscience.dataforge.meta.asValue
import space.kscience.dataforge.meta.double
import space.kscience.kmath.UnstableKMathAPI
import space.kscience.kmath.domains.center
import space.kscience.kmath.histogram.Histogram1D
import space.kscience.kmath.misc.UnstableKMathAPI
import space.kscience.kmath.operations.asIterable
import space.kscience.kmath.structures.Buffer
import space.kscience.kmath.structures.DoubleBuffer

View File

@ -1,7 +1,6 @@
rootProject.name = "numass"
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
enableFeaturePreview("VERSION_CATALOGS")
pluginManagement {