This paper describes PyOED, a highly extensible scientific package that enables developing and testing model-constrained optimal experimental design (OED) for inverse problems. Specifically, PyOED aims to be a comprehensive Python toolkit for model-constrained OED. The package targets scientists and researchers interested in understanding the details of OED formulations and approaches. It is also meant to enable researchers to experiment with standard and innovative OED technologies with a wide range of test problems (e.g., simulation models). OED, inverse problems (e.g., Bayesian inversion), and data assimilation (DA) are closely related research fields, and their formulations overlap significantly. Thus, PyOED is continuously being expanded with a plethora of Bayesian inversion, DA, and OED methods as well as new scientific simulation models, observation error models, and observation operators. These pieces are added such that they can be permuted to enable testing OED methods in various settings of varying complexities. The PyOED core is completely written in Python and utilizes the inherent object-oriented capabilities; however, the current version of PyOED is meant to be extensible rather than scalable. Specifically, PyOED is developed to enable rapid development and benchmarking of OED methods with minimal coding effort and to maximize code reutilization. This paper provides a brief description of the PyOED layout and philosophy and provides a set of exemplary test cases and tutorials to demonstrate the potential of the package.
翻译:本文介绍PyOED,一个高度可扩展的科学计算包,支持开发和测试面向反问题的模型约束最优实验设计(OED)方法。具体而言,PyOED旨在成为模型约束OED的综合Python工具包。该软件包面向希望深入理解OED公式与实现细节的科研人员,同时也使研究者能够在广泛测试问题(如仿真模型)中实验标准及创新的OED技术。OED、反问题(如贝叶斯反演)和数据同化(DA)是紧密相关的研究领域,其数学表述高度重叠。因此,PyOED持续扩展集成大量贝叶斯反演、DA和OED方法,以及新的科学仿真模型、观测误差模型和观测算子。这些组件被设计为可置换组合,从而支持在不同复杂度场景下测试OED方法。PyOED核心完全采用Python编写,并充分利用其面向对象特性;当前版本侧重于可扩展性而非可扩展性能。具体而言,PyOED旨在以最小编码工作量实现OED方法的快速开发与基准测试,并最大化代码复用率。本文简要阐述PyOED的框架设计与理念,并提供一系列示例测试案例与教程以展示该软件包的应用潜力。