Source code for qibocal.cli.autocalibration
from pathlib import Path
from qibo.backends import construct_backend
from ..auto.history import History
from ..auto.mode import AUTOCALIBRATION
from ..auto.output import Metadata, Output
from ..auto.runcard import Runcard
from .report import report
[docs]def autocalibrate(runcard: Runcard, folder: Path, force, update):
"""Autocalibration.
Arguments:
- RUNCARD: runcard with declarative inputs.
"""
# rename for brevity
backend = construct_backend(backend=runcard.backend, platform=runcard.platform)
platform = backend.platform
if platform is None:
raise ValueError("Qibocal requires a Qibolab platform to run.")
# generate output folder
path = Output.mkdir(folder, force)
# dump action runcard
runcard.dump(path)
# generate meta
meta = Metadata.generate(path.name, backend)
meta.targets = runcard.targets
output = Output(History(), meta, platform)
output.dump(path)
# connect and initialize platform
platform.connect()
# run
meta.start()
history = runcard.run(
output=path,
platform=platform,
mode=AUTOCALIBRATION,
update=update,
)
meta.end()
# TODO: implement iterative dump of report...
# stop and disconnect platform
platform.disconnect()
# dump history, metadata, and updated platform
output.history = history
output.dump(path)
report(path, history)