class RandomEffectBound(Form): location = IntField(nullable=True) value = FloatField(nullable=True)
class StudentsDOF(Form): priors = FloatField(nullable=True, default=5) data = FloatField(nullable=True, default=5)
class FixedRandomFloat(Form): fixed = FloatField(nullable=True) random = FloatField(nullable=True)
class SmoothingPrior(Form): """Priors for smoothing.""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.prior_object = None prior_type = OptionField(["dage", "dtime", "value"]) age_lower = FloatField(nullable=True, display="Age lower") age_upper = FloatField(nullable=True, display="Age upper") time_lower = FloatField(nullable=True, display="Time lower") time_upper = FloatField(nullable=True, display="Time upper") born_lower = FloatField(nullable=True, display="Born lower") born_upper = FloatField(nullable=True, display="Born upper") density = OptionField([ "uniform", "gaussian", "laplace", "students", "log_gaussian", "log_laplace", "log_students" ], display="Density") min = FloatField(nullable=True, default=float("-inf"), display="Min") mean = FloatField(nullable=True, display="Mean") max = FloatField(nullable=True, default=float("inf"), display="Max") std = FloatField(nullable=True, display="Std") nu = FloatField(nullable=True) eta = FloatField(nullable=True) def _full_form_validation(self, root): errors = [] if not self.is_field_unset("age_lower") and not self.is_field_unset( "age_lower"): if self.age_lower > self.age_upper: errors.append( "age_lower must be less than or equal to age_upper") if not self.is_field_unset("time_lower") and not self.is_field_unset( "time_lower"): if self.time_lower > self.time_upper: errors.append( "time_lower must be less than or equal to time_upper") try: lower = self.min upper = self.max mean = self.mean if mean is None and (np.isinf(lower) or np.isinf(upper)): mean = max(lower, 0) std = self.std if self.nu is None: if self.density == "students" and not root.is_field_unset( "students_dof"): nu = root.students_dof.priors elif self.density == "log_students" and not root.is_field_unset( "log_students_dof"): nu = root.log_students_dof.priors else: nu = None else: nu = self.nu if self.eta is None: if not root.is_field_unset("eta"): eta = root.eta.priors else: eta = None else: eta = self.eta if self.density == "uniform": self.prior_object = priors.Uniform(lower, upper, mean) elif self.density == "gaussian": self.prior_object = priors.Gaussian(mean, std, lower, upper) elif self.density == "laplace": self.prior_object = priors.Laplace(mean, std, lower, upper) elif self.density == "students": self.prior_object = priors.StudentsT(mean, std, nu, lower, upper) elif self.density == "log_gaussian": self.prior_object = priors.LogGaussian(mean, std, eta, lower, upper) elif self.density == "log_laplace": self.prior_object = priors.LogLaplace(mean, std, eta, lower, upper) elif self.density == "log_students": self.prior_object = priors.LogStudentsT( mean, std, nu, eta, lower, upper) else: errors.append(f"Unknown density '{self.density}'") except priors.PriorError as e: errors.append(f"Parameters incompatible with density '" f"{self.density}': {str(e)}") return errors
class DataEta(Form): integrand_measure_id = IntField(nullable=True) value = FloatField(nullable=True)
class Eta(Form): priors = FloatField(nullable=True) data = FloatField(nullable=True)
class Model(Form): modelable_entity_id = IntField() decomp_step_id = IntField() model_version_id = IntField(nullable=True) random_seed = IntField() minimum_meas_cv = FloatField(nullable=True, display="Data CV floor") add_csmr_cause = IntField(nullable=True, display="CSMR cause") title = StrField(nullable=True, display="Title") description = StrField(nullable=True, display="Description") crosswalk_version_id = IntField(nullable=False, display="Crosswalk version ID") bundle_id = IntField(nullable=True, display="Data bundle") drill = OptionField(["cascade", "drill"], display="Drill") drill_location = IntField(display="Drill location", nullable=True) drill_location_start = IntField(display="Drill location start", nullable=True) drill_location_end = NativeListField(display="Drill location end", nullable=True) drill_sex = OptionField([1, 2], constructor=int, nullable=True, display="Drill sex") birth_prev = OptionField([0, 1], constructor=int, nullable=True, default=0, display="Prevalence at birth") default_age_grid = StringListField(constructor=float, display="(Cascade) Age grid") default_time_grid = StringListField(constructor=float, display="(Cascade) Time grid") constrain_omega = OptionField([0, 1], constructor=int, nullable=False, display="Constrain other cause mortality") exclude_data_for_param = ListField(constructor=int, nullable=True, display="Exclude data for parameter") ode_step_size = FloatField(display="ODE step size") addl_ode_stpes = StringListField(constructor=float, nullable=True, display="Advanced additional ODE steps") split_sex = OptionField(["most_detailed", "1", "2", "3", "4", "5"], display="Split sex (Being used as Drill Start)") quasi_fixed = OptionField([0, 1], default=0, constructor=int, nullable=True) zero_sum_random = ListField(nullable=True, display="Zero-sum random effects") bound_frac_fixed = FloatField( default=1e-2, nullable=True, display="allowed modification to point to move it within bounds") bound_random = FloatField( nullable=True, display="allowed modification to point to move it within bounds") rate_case = StrField(nullable=False, display="The rate case") data_density = StrField(nullable=True, display="Data density") relabel_incidence = IntField(nullable=False, display="Relabel incidence") def _full_form_validation(self, root): errors = [] if self.drill == "drill": if self.is_field_unset("drill_sex"): errors.append("For a drill, please specify Drill sex.") return errors
class MinCVRate(Form): cascade_level_id: StrField = StrField(nullable=True) rate_measure_id: StrField = StrField(nullable=True) value: FloatField = FloatField(nullable=True)
class MinCV(Form): cascade_level_id: StrField = StrField(nullable=True) value: FloatField = FloatField(nullable=True)
class DataCV(Form): integrand_measure_id: IntField = IntField(nullable=True) value: FloatField = FloatField(nullable=True)