AI Tool Modules
This page lists the search algorithm modules available in NIMO.
Each module can be specified via the method argument of the nimo.selection function, or imported and used directly.
BLOX: Boundless Objective-Free Exploration
Overview
ai_tool_blox.py implements the BLOX algorithm.
Rather than maximizing an objective function, it efficiently explores uncharted regions using Stein Novelty as a measure of diversity in the objective function space.
It is suited for “objective-free exploration,” where no objective function is defined in advance.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
bool |
If |
License and Citation
License: MIT
If you use BLOX, please cite the following paper.
Kei Terayama, Masato Sumita, Ryo Tamura, Daniel T. Payne, Mandeep K. Chahal, Shinsuke Ishihara, and Koji Tsuda, Pushing property limits in materials discovery via boundless objective-free exploration, Chemical Science 11, 5959-5968 (2020). Available from https://pubs.rsc.org/en/content/articlelanding/2020/SC/d0sc00982b.
Example
import ai_tool_blox
ai_tool_blox.BLOX(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 2,
num_proposals = 2,
output_res = False
).select()
BOMP: Bayesian Optimization with Material Process
Overview
ai_tool_bomp.py implements BOMP (Bayesian Optimization with Material Process).
In addition to standard Bayesian optimization using PHYSBO, it performs process-constrained Bayesian optimization by fixing the process parameters specified by process_X and optimizing the remaining parameter space.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
str |
Acquisition function. Choose from |
|
bool |
If |
|
list |
Index list of process parameters to fix |
|
bool |
If |
|
bool |
If |
Example
import ai_tool_bomp
ai_tool_bomp.BOMP(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
physbo_score = "EI",
minimization = False,
process_X = [0, 1],
output_res = False,
training_res = False
).select()
COMBI: Composition-Spread Exploration
Overview
ai_tool_combi.py implements the COMBI (Combinatorial) method.
It first determines the best composition point using Bayesian optimization, then proposes a set of candidates (composition spread) by continuously varying the composition between specified element pairs starting from that point, and also proposes the element pair with the highest potential among them.
This method is suited for combinatorial experiments.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle (number of divisions in the composition spread) |
|
str |
Acquisition function. Choose from |
|
bool |
If |
|
list |
Composition range for each element |
|
list |
Index list of element pairs for composition spread |
License and Citation
If you use COMBI, please cite the following paper.
Ryo Toyama, Ryo Tamura, Shoichi Matsuda, Yuma Iwasaki, and Yuya Sakuraba, Autonomous closed-loop exploration of composition-spread films for the anomalous Hall effect, npj Computational Materials 11, 329 (2025). Available from https://www.nature.com/articles/s41524-025-01828-7.
Example
import ai_tool_combi
ai_tool_combi.COMBI(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 5,
physbo_score = "EI",
minimization = False,
combi_ranges = [[0, 100], [0, 100], [0, 100]],
spread_elements = [[0, 1], [1, 2], [0, 2]]
).select()
DOE: Design of Experiments
Overview
ai_tool_doe.py is a module based on Design of Experiments (DOE).
It selects experimental conditions that uniformly cover the search space, using criteria such as distance from existing observations or matrix determinants.
Four modes are available: greedy , distance , d_optimal , and lhs.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
str |
Sampling mode. Choose from |
|
int |
Number of iterations for the Exchange Algorithm. If |
Example
import ai_tool_doe
ai_tool_doe.DOE(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
mode = "distance",
max_iter = 1000
).select()
ES: Exhaustive Search
Overview
ai_tool_es.py implements Exhaustive Search.
It proposes num_proposals candidates in order from the top of the candidates file.
Useful when you want to experiment on all candidates in sequence, or when the number of candidates is small.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
Example
import ai_tool_es
ai_tool_es.ES(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2
).select()
NTS: Nested Thompson Sampling
Overview
ai_tool_nts.py implements NTS (Nested Thompson Sampling).
It sets a threshold based on the maximum value of observed objectives and preferentially selects candidates with a high probability of exceeding that threshold.
The strictness of the threshold can be adjusted via sample_mode.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives (currently only |
|
int |
Number of proposals per cycle |
|
str |
Threshold scale mode. Choose from |
|
bool |
If |
|
bool |
If |
|
int |
Random seed |
|
bool |
If |
Example
import ai_tool_nts
ai_tool_nts.NTS(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
sample_mode = "moderate",
minimization = False,
use_dpp = False,
re_seed = 0,
output_res = False
).select()
PDC: Phase Diagram Construction
Overview
ai_tool_pdc.py is a module for efficient Phase Diagram Construction.
It predicts the phase of each experimental condition using label propagation (Label Propagation / Label Spreading) and prioritizes exploration of high-uncertainty regions to construct phase diagrams efficiently.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives (number of phase label columns). Only |
|
int |
Number of proposals per cycle |
|
str |
Phase estimation algorithm. |
|
str |
Sampling strategy. Choose from |
|
bool |
If |
License and Citation
License: MIT
If you use PDC, please cite the following papers.
Kei Terayama, Ryo Tamura, Yoshitaro Nose, Hidenori Hiramatsu, Hideo Hosono, Yasushi Okuno, and Koji Tsuda, Efficient construction method for phase diagrams using uncertainty sampling, Physical Review Materials 3, 033802 (2019). Available from https://journals.aps.org/prmaterials/abstract/10.1103/PhysRevMaterials.3.033802.
Ryo Tamura, Guillaume Deffrennes, Kwangsik Han, Taichi Abe, Haruhiko Morito, Yasuyuki Nakamura, Masanobu Naito, Ryoji Katsube, Yoshitaro Nose, and Kei Terayama, Machine-learning-based phase diagram construction for high-throughput batch experiments, Science and Technology of Advanced Materials: Methods 2, 153-161 (2022). Available from https://www.tandfonline.com/doi/full/10.1080/27660400.2022.2076548.
Example
import ai_tool_pdc
ai_tool_pdc.PDC(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
pdc_estimation = "LP",
pdc_sampling = "LC",
output_res = False
).select()
PHYSBO: Bayesian Optimization
Overview
ai_tool_physbo.py is a Bayesian optimization module using the PHYSBO package.
It supports both single-objective and multi-objective optimization.
Acquisition functions TS (Thompson Sampling), EI (Expected Improvement), and PI (Probability of Improvement) are available.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
str |
Acquisition function. For single-objective, choose from |
|
bool |
If |
|
bool |
If |
|
bool |
If |
License and Citation
License: Mozilla Public License version 2.0 (MPL v2)
If you use PHYSBO, please cite the following paper.
Yuichi Motoyama, Ryo Tamura, Kazuyoshi Yoshimi, Kei Terayama, Tsuyoshi Ueno, and Koji Tsuda, Bayesian optimization package: PHYSBO, Computer Physics Communications 278, 108405 (2022). Available from https://www.sciencedirect.com/science/article/pii/S0010465522001242?via%3Dihub.
Example
import ai_tool_physbo
ai_tool_physbo.PHYSBO(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
physbo_score = "EI",
minimization = False,
output_res = False,
training_res = False
).select()
PTR: Probability of Target Range
Overview
ai_tool_ptr.py implements PTR (Probability of Target Range).
It predicts each objective function using Gaussian process regression and proposes the experimental condition that maximizes the probability of falling within a user-specified target range.
Different target ranges can be set for each objective function in multi-objective optimization.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
list |
Target range for each objective in the format |
|
bool |
If |
License and Citation
If you use PTR, please cite the following paper.
Akira Takahashi, Kei Terayama, Yu Kumagai, Ryo Tamura, and Fumiyasu Oba, Fully autonomous materials screening methodology combining first-principles calculations, machine learning and high-performance computing system, Science and Technology of Advanced Materials: Methods 3, 1, 2261834 (2023). Available from https://www.tandfonline.com/doi/full/10.1080/27660400.2023.2261834.
Example
import ai_tool_ptr
ai_tool_ptr.PTR(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 2,
num_proposals = 2,
ptr_ranges = [[10.0, 20.0], [0.5, 1.0]],
output_res = False
).select()
RE: Random Exploration
Overview
ai_tool_re.py implements Random Exploration.
It randomly selects experimental conditions from untested candidates.
Useful as an initial search or as a baseline for comparison with other methods.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
list |
Index list of process parameters. If |
|
int |
Random seed. If |
Example
import ai_tool_re
ai_tool_re.RE(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
process_X = None,
re_seed = 0
).select()
RSVM: Ranking Support Vector Machine
Overview
ai_tool_rsvm.py implements RSVM (Ranking Support Vector Machine).
Rather than the absolute values of objective functions, it learns the ordinal relationships (ranking information) of observed data and predicts scores for unobserved data to select experimental conditions.
By adding external datasets via other_datasets , ranking information from other material systems can be leveraged in a transfer learning fashion.
Arguments
Argument |
Type |
Description |
|---|---|---|
|
str |
Path to the candidates file |
|
str |
Path to the proposals file |
|
int |
Number of objectives |
|
int |
Number of proposals per cycle |
|
list |
List of paths to external datasets for transfer learning. Use an empty list |
|
bool |
If |
|
bool |
If |
License and Citation
If you use RSVM, please cite the following paper.
Weilin Yuan, Yusuke Hibi, Ryo Tamura, Masato Sumita, Yasuyuki Nakamura, Masanobu Naito, and Koji Tsuda, Revealing factors influencing polymer degradation with rank-based machine learning, Patterns 4, 100846 (2023). Available from https://linkinghub.elsevier.com/retrieve/pii/S2666389923002258.
Example
import ai_tool_rsvm
ai_tool_rsvm.RSVM(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
other_datasets = [],
minimization = False,
output_res = False
).select()