Source code for sirepo.sim_data.canvas
# -*- coding: utf-8 -*-
"""simulation data operations
:copyright: Copyright (c) 2024 RadiaSoft LLC. All Rights Reserved.
:license: http://www.apache.org/licenses/LICENSE-2.0.html
"""
from pykern.pkcollections import PKDict
from pykern.pkdebug import pkdc, pkdlog, pkdp
import sirepo.sim_data
[docs]
class SimData(sirepo.sim_data.SimDataBase):
[docs]
@classmethod
def fixup_old_data(cls, data, qcall, **kwargs):
dm = data.models
cls._init_models(
dm,
[
"bunchAnimation",
"bunchAnimation1",
"bunchAnimation2",
"bunchAnimation3",
"distribution",
"sigmaAnimation",
"simulationSettings",
"twissAnimation",
],
)
if "bunchReport1" not in dm:
for i in range(1, 5):
m = dm[f"bunchReport{i}"] = PKDict()
cls.update_model_defaults(m, "bunchReport")
@classmethod
def _compute_model(cls, analysis_model, *args, **kwargs):
if "bunchReport" in analysis_model:
return "bunchReport"
return super(SimData, cls)._compute_model(analysis_model, *args, **kwargs)
@classmethod
def _compute_job_fields(cls, data, r, compute_model):
if "bunchReport" in r:
return ["distribution", "rpnVariables"]
return []
@classmethod
def _lib_file_basenames(cls, data):
res = []
d = data.models.distribution
if d.distributionType == "File" and d.distributionFile:
res.append(
cls.lib_file_name_with_model_field(
"distribution", "distributionFile", d.distributionFile
)
)
return res