How to Migrate minto.v0 Experiment to minto.v1

How to Migrate minto.v0 Experiment to minto.v1#

This notebook is a guide to help you migrate your minto.v0 experiment to minto.v1.

import minto
import numpy as np
import jijmodeling as jm
tsp = minto.problems.tsp.QuadTSP()
tsp_problem = tsp.problem()
tsp_data = tsp.data(n=8)

minto.v0 experiment#

You can use the v0.x.x version of the minto in v1.x.x with minto.v1. In the following, we create a simple experiment using minto.v0 and then migrate it to minto.v1.

import jijmodeling_transpiler as jmt

compiled_instance = jmt.core.compile_model(tsp_problem, tsp_data)
qubo_builder = jmt.core.pubo.transpile_to_pubo(compiled_instance)
qubo, _ = qubo_builder.get_qubo_dict()
import minto.v0
import openjij as oj

sampler = oj.SASampler()
sweeps_list = np.arange(100, 1000, 100)

exp_v0 = minto.v0.Experiment("v0_exp")
for sweeps in sweeps_list:
    with exp_v0.run():
        response = sampler.sample_qubo(qubo, num_reads=10, num_sweeps=sweeps)
        sampleset = jmt.core.pubo.openjij_decode.decode_from_openjij(
            response,
            qubo_builder,
            compiled_instance
        )
        sampleset = jm.experimental.from_old_sampleset(sampleset)
        exp_v0.log_result("result", sampleset)
        exp_v0.log_parameter("sweeps", sweeps)
exp_v0.table(enable_sampleset_expansion=False)
experiment_name run_id sweeps result
0 v0_exp 0 100 (Sample(run_id="4b9b8389-a331-4ddd-a8d7-a9afbd...
1 v0_exp 1 200 (Sample(run_id="380588c0-e95c-474a-911a-5dd2ed...
2 v0_exp 2 300 (Sample(run_id="2e84fa06-08b5-4818-9b39-1f7e06...
3 v0_exp 3 400 (Sample(run_id="6cf101e2-0673-488a-a21f-2f7dd4...
4 v0_exp 4 500 (Sample(run_id="c02d1bc0-8535-4ecd-beb1-770e04...
5 v0_exp 5 600 (Sample(run_id="13ee025e-99dc-4c2e-aefa-aed347...
6 v0_exp 6 700 (Sample(run_id="2ca17c58-8b0e-4604-ada9-3110ec...
7 v0_exp 7 800 (Sample(run_id="a55c41cb-1ecf-4df2-8d0c-3af435...
8 v0_exp 8 900 (Sample(run_id="11207a98-f05f-4376-ad49-9a84c6...

Migrate from minto.v0 to minto.v1#

To migrate from minto.v0 to minto.v1, you need to use migrate_to_v1_from_v0 function.

from minto.migrator.v0tov1 import migrate_to_v1_from_v0

exp_v1 = migrate_to_v1_from_v0(exp_v0)
[2025-08-01 22:35:29] πŸš€ Starting experiment 'v0_exp'
[2025-08-01 22:35:29]   β”œβ”€ πŸ“Š Environment: OS: Linux 6.6.93+, CPU: Intel(R) Xeon(R) CPU @ 2.80GHz (4 cores), Memory: 15.6 GB, Python: 3.11.10
[2025-08-01 22:35:29]   β”œβ”€ πŸ“Š Environment Information
[2025-08-01 22:35:29]       β”œβ”€ OS: Linux 6.6.93+
[2025-08-01 22:35:29]       β”œβ”€ Platform: Linux-6.6.93+-x86_64-with-glibc2.35
[2025-08-01 22:35:29]       β”œβ”€ CPU: Intel(R) Xeon(R) CPU @ 2.80GHz (4 cores)
[2025-08-01 22:35:29]       β”œβ”€ Memory: 15.6 GB
[2025-08-01 22:35:29]       β”œβ”€ Architecture: x86_64
[2025-08-01 22:35:29]       β”œβ”€ Python: 3.11.10
[2025-08-01 22:35:29]       β”œβ”€ Key Package Versions:
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #0
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 100
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #0 completed (0.1s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #1
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 200
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #1 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #2
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 300
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #2 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #3
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 400
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #3 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #4
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 500
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #4 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #5
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 600
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #5 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #6
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 700
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #6 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #7
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 800
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #7 completed (0.0s)
[2025-08-01 22:35:29]   β”œβ”€ πŸƒ Created run #8
[2025-08-01 22:35:29]       β”œβ”€ πŸ“ Parameter: sweeps = 900
[2025-08-01 22:35:29]       β”œβ”€ πŸ“Š SampleSet 'result': 0 samples
[2025-08-01 22:35:29]   β”œβ”€ βœ… Run #8 completed (0.0s)
exp_v1.get_run_table()
sampleset_result parameter metadata
num_samples obj_mean obj_std obj_min obj_max feasible name sweeps run_id elapsed_time
run_id
0 10 2.703292 0.271523 2.362134 3.326194 10 result 100 0 0.055799
1 10 2.851875 0.347497 2.466858 3.553749 10 result 200 1 0.004895
2 10 2.638969 0.639893 1.452414 3.518039 4 result 300 2 0.004403
3 10 2.609291 0.195442 2.341296 3.037372 10 result 400 3 0.004015
4 10 2.307913 0.680801 0.975667 3.268000 1 result 500 4 0.003958
5 10 2.618542 0.413288 2.049099 3.277035 4 result 600 5 0.004461
6 10 2.781062 0.317559 2.281351 3.230759 10 result 700 6 0.004591
7 10 2.405925 0.673386 1.297302 3.662775 2 result 800 7 0.004686
8 10 2.710594 0.301820 2.281351 3.202480 10 result 900 8 0.004513

Then you can save the migrated experiment using .save() or .save_as_ommx_archive function.

# exp_v1.save()  # save the experiment at disk
# exp_v1.save_as_ommx_archive("v1_exp.ommx")  # save the experiment as an ommx archive