Yusei Ito, Yasuo Takeichi, Hideitsu Hino and Kanta Ono
Machine Learning: Science and Technology 6, 025037 (2025). https://doi.org/10.1088/2632-2153/add0f6
@article{ito2025experimentaldesign,
year = {2025},
title = {Optimal spectroscopic measurement design: Bayesian framework for rational data acquisition},
author = {Yusei Ito and
Yasuo Takeichi and
Hideitsu Hino and
Kanta Ono},
journal = {Machine Learning: Science and Technology},
doi = {10.1088/2632-2153/add0f6},
volume = {6},
number = {2},
pages = {025037}
}
Run the following command:
python CutoffOptimization.pypython MakeCovarianceMatrix.pyjulia GetOptimalPoints_SquaredLoss.jljulia GetOptimalPoints_KLDivergence.jlpython BiasVarianceDecomposition.pyFor fast processing, we implemented the part of optimal measurement points in Julia.
Others are implemented in Python
-
Calculate the parameter
$c$ in the covariance matrix of a prior distribution. The implementation is in CutoffOptimization.py -
Get prior distribution The implementation is in the MakeCovarianceMatrix.py
-
Get optimal measurement points The implementation is in the GetOptimalPoints.jl
-
Calculate minimal measurement points by bias-variance decomposition. The implementation is in the BiasVarianceDecomposition.py
Details of each step are provided in the following sections.
For XAS application provided in our paper, just run
python CutoffOptimization.pyIf you want to try your own measurement, load the standard data and arrange the noise function.
For the XAS application, we take into account the background that is specific to the XAS problem.
To reproduce our results provided in the paper, run
python MakeCovarianceMatrix.pyFor your own application, please comment out the part of the background.
You can decide the following parameters:
reg_energy: All of the discritized points, which is the candidate of the measurement points.initial_sampling_num: Number of initial measurement points.SamplingNum: The total number of measurement points.
Run
julia GetOptimalPoints_SquaredLoss.jljulia GetOptimalPoints_KLDivergence.jlthen you can get optimal measurement points.
Run
python BiasVarianceDecomposition.pyMake sure that you need to use same covariance matrix and candidate measurement points as the part of obtaining the optimal measurement points.