feat(grid-fit): move parallelization to Spectrum model
- save intermediate results more often
This commit is contained in:
@@ -110,7 +110,6 @@ private class GridArgs : CliktCommand() {
|
||||
|
||||
@UnstableKMathAPI
|
||||
override fun run() {
|
||||
|
||||
val postfix = if (postfix != null) "-$postfix" else ""
|
||||
|
||||
val fitParamsBase: Map<Symbol, Double> = mapOf(
|
||||
@@ -123,7 +122,7 @@ private class GridArgs : CliktCommand() {
|
||||
rearWall to rwall
|
||||
)
|
||||
|
||||
val spectrumModel: NBkgSpectrum = SterileNeutrinoSpectrumRWall(
|
||||
val spectrumModel: NBkgSpectrum = SterileNeutrinoSpectrumRWallMP(
|
||||
wallFunc = wallFunc, transmission = NumassTransmission(
|
||||
trapFunc = { ei, ef, _ ->
|
||||
val delta = ei - ef
|
||||
@@ -160,55 +159,61 @@ private class GridArgs : CliktCommand() {
|
||||
|
||||
val chi2Matrix = mutableMapOf<Pair<Double, Double>, Double?>()
|
||||
|
||||
withContext(Dispatchers.Default) {
|
||||
coroutineScope {
|
||||
mGrid.forEach { m ->
|
||||
u2Grid.forEach { u2Val ->
|
||||
launch {
|
||||
val taskId = "${m.toInt()}_${String.format("%.0e", u2Val)}"
|
||||
|
||||
val fitParams = fitParamsBase.toMutableMap()
|
||||
fitParams[NumassBeta.msterile2] = (m * 1000.0).pow(2)
|
||||
fitParams[NumassBeta.u2] = u2Val
|
||||
|
||||
val logMessages = mutableListOf<String>()
|
||||
val dumpLogger = Loggable { tag, block ->
|
||||
val msg = "[$tag] ${block()}"
|
||||
logMessages += msg
|
||||
println("[$taskId] $msg")
|
||||
}
|
||||
|
||||
val fit = fitNumassSpectrumRWall(
|
||||
spectrumModel, data, fitVars, fitParams, dumpLogger
|
||||
)
|
||||
|
||||
chi2Matrix[Pair(m, u2Val)] = fit.chiSquaredOrNull
|
||||
|
||||
if (!noReports) {
|
||||
val mStr = String.format("%04.1f", m)
|
||||
val u2Str = String.format("%9.2e", u2Val).replace(".", "_")
|
||||
val reportFileName = "${mStr}-${u2Str}.html"
|
||||
val reportPath = reportsDir.resolve(reportFileName)
|
||||
|
||||
reportPage(
|
||||
spectrum,
|
||||
postfix,
|
||||
data,
|
||||
spectrumModel,
|
||||
fitParams,
|
||||
fit,
|
||||
dataForView,
|
||||
dataPath,
|
||||
this@GridArgs,
|
||||
logMessages
|
||||
).makeFile(path = reportPath, show = false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mGrid.forEach { m ->
|
||||
u2Grid.forEach { u2 ->
|
||||
chi2Matrix[Pair(m, u2)] = null
|
||||
}
|
||||
}
|
||||
|
||||
saveChi2GridToTsv(spectrum, postfix, mGrid, u2Grid, chi2Matrix)
|
||||
|
||||
var current = 0
|
||||
val total = mGrid.size * u2Grid.size
|
||||
|
||||
for (m in mGrid) {
|
||||
for (u2Val in u2Grid) {
|
||||
current++
|
||||
val taskId = "${m.toInt()}_${String.format("%.0e", u2Val)}"
|
||||
|
||||
val fitParams = fitParamsBase.toMutableMap()
|
||||
fitParams[NumassBeta.msterile2] = (m * 1000.0).pow(2)
|
||||
fitParams[NumassBeta.u2] = u2Val
|
||||
|
||||
val logMessages = mutableListOf<String>()
|
||||
val dumpLogger = Loggable { tag, block ->
|
||||
val msg = "[$tag] ${block()}"
|
||||
logMessages += msg
|
||||
println("$current/$total [$taskId] $msg")
|
||||
}
|
||||
|
||||
val fit = fitNumassSpectrumRWall(
|
||||
spectrumModel, data, fitVars, fitParams, dumpLogger
|
||||
)
|
||||
|
||||
chi2Matrix[Pair(m, u2Val)] = fit.chiSquaredOrNull
|
||||
|
||||
if (!noReports) {
|
||||
val mStr = String.format("%04.1f", m)
|
||||
val u2Str = String.format("%9.2e", u2Val).replace(".", "_")
|
||||
val reportFileName = "${mStr}-${u2Str}.html"
|
||||
val reportPath = reportsDir.resolve(reportFileName)
|
||||
|
||||
reportPage(
|
||||
spectrum,
|
||||
postfix,
|
||||
data,
|
||||
spectrumModel,
|
||||
fitParams,
|
||||
fit,
|
||||
dataForView,
|
||||
dataPath,
|
||||
this@GridArgs,
|
||||
logMessages
|
||||
).makeFile(path = reportPath, show = false)
|
||||
}
|
||||
saveChi2GridToTsv(spectrum, postfix, mGrid, u2Grid, chi2Matrix)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user