mirror of
https://github.com/vale981/two_qubit_model
synced 2025-03-04 17:21:43 -05:00
add timestamp to models
This commit is contained in:
parent
720ce192d8
commit
c52deba63f
3 changed files with 23 additions and 3 deletions
|
@ -17,6 +17,7 @@ from hopsflow.util import EnsembleValue
|
||||||
import hashlib
|
import hashlib
|
||||||
import hops.core.hierarchy_parameters as params
|
import hops.core.hierarchy_parameters as params
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -43,7 +44,14 @@ class Model(ABC):
|
||||||
breaking changes.
|
breaking changes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_ignored_keys: list[str] = field(default_factory=lambda: ["_sigmas", "description"])
|
timestamp: datetime = field(default_factory=lambda: datetime.now())
|
||||||
|
"""
|
||||||
|
A timestamp that signals when the simulation was run. Is not used to hash or compare objects.
|
||||||
|
"""
|
||||||
|
|
||||||
|
_ignored_keys: list[str] = field(
|
||||||
|
default_factory=lambda: ["_sigmas", "description", "timestamp"]
|
||||||
|
)
|
||||||
"""Keys that are ignored when comparing or hashing models."""
|
"""Keys that are ignored when comparing or hashing models."""
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
|
|
|
@ -173,7 +173,7 @@ class OttoEngine(QubitModelMutliBath):
|
||||||
"""The smoothness of the modulation of ``H``."""
|
"""The smoothness of the modulation of ``H``."""
|
||||||
|
|
||||||
timings_L: tuple[Timings, Timings] = field(
|
timings_L: tuple[Timings, Timings] = field(
|
||||||
default_factory=lambda: ((0, 0.05, 0.15, 0.2), (0.5, 0.55, 0.65, 0.7))
|
default_factory=lambda: ((0.0, 0.05, 0.15, 0.2), (0.5, 0.55, 0.65, 0.7))
|
||||||
)
|
)
|
||||||
"""The timings for the ``L`` modulation. See :any:`SmoothlyInterpolatdPeriodicMatrix`."""
|
"""The timings for the ``L`` modulation. See :any:`SmoothlyInterpolatdPeriodicMatrix`."""
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ class OttoEngine(QubitModelMutliBath):
|
||||||
|
|
||||||
self.ω_s[i] = res.x
|
self.ω_s[i] = res.x
|
||||||
|
|
||||||
if self.t == "auto":
|
if isinstance(self.t, str) and self.t == "auto":
|
||||||
t_max = self.num_cycles * self.Θ
|
t_max = self.num_cycles * self.Θ
|
||||||
|
|
||||||
# we set this here to avoid different results on different platforms
|
# we set this here to avoid different results on different platforms
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
from datetime import datetime
|
||||||
|
import dateutil.parser
|
||||||
from functools import singledispatchmethod
|
from functools import singledispatchmethod
|
||||||
import dataclasses
|
import dataclasses
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
@ -96,6 +98,13 @@ class JSONEncoder(json.JSONEncoder):
|
||||||
"value": obj.__getstate__(),
|
"value": obj.__getstate__(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@default.register
|
||||||
|
def _(self, obj: datetime):
|
||||||
|
return {
|
||||||
|
"type": "datetime",
|
||||||
|
"value": obj.isoformat(),
|
||||||
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def dumps(cls, data, **kwargs) -> str:
|
def dumps(cls, data, **kwargs) -> str:
|
||||||
"""Like :any:`json.dumps`, just for this encoder.
|
"""Like :any:`json.dumps`, just for this encoder.
|
||||||
|
@ -164,6 +173,9 @@ def object_hook(dct: dict[str, Any]):
|
||||||
if type == "tuple":
|
if type == "tuple":
|
||||||
return tuple(dct["value"])
|
return tuple(dct["value"])
|
||||||
|
|
||||||
|
if type == "datetime":
|
||||||
|
return dateutil.parser.parse(dct["value"])
|
||||||
|
|
||||||
return dct
|
return dct
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue