zjb.main.dtb.dtb_model 源代码
from abc import abstractmethod
from typing import Any
from traits.api import Dict, Float, List, Str, Union
from zjb._traits.types import Instance, OptionalInstance
from zjb.dos.data import Data
from ..data.correlation import SpaceCorrelation
from ..simulation.monitor import Monitor
from ..simulation.simulator import NumbaFuncParameter
from ..simulation.solver import EulerSolver, Solver
from ..trait_types import FloatVector
from .atlas import Atlas
from .dynamics_model import DynamicsModel
[文档]
class DynamicParameter:
"""动态参数类,用于表示数字孪生脑模型中被监听的动态参数"""
@abstractmethod
def __call__(
self,
model: "DTBModel",
connectivity: SpaceCorrelation,
parameters: dict[str, Any],
) -> dict[str, Any]:
"""
动态参数。
Parameters
----------
model : DTBModel
使用的数字孪生脑。
connectivity : SpaceCorrelation
模型使用的脑区间的连接。
parameters : dict[str, Any]
初始参数集合。
Returns
-------
dict[str, Any]
计算后的动态参数集合。
"""
...
[文档]
class DTBModel(Data):
"""
DTB模型类,即数字孪生脑模型。
Attributes
----------
name : Str
模型的名称。
atlas : Instance(Atlas)
模型使用的脑图谱。
dynamics : Instance(DynamicsModel)
模型所使用的动力学模型。
states : Dict(Str, Union(Float, FloatVector))
模型的状态变量及初值。
parameters : Dict(Str, Union(Float, FloatVector, Str))
模型的参数及初值。
dynamic_parameters : OptionalInstance(DynamicParameter)
动态参数(可选)。
solver : Instance(Solver, EulerSolver)
用于求解模型的求解器。
monitors : List(Instance(Monitor))
模型监视器列表。
t : Float
仿真时间。
"""
name = Str()
atlas = Instance(Atlas, required=True)
dynamics = Instance(DynamicsModel, required=True)
states = Dict(Str, Union(Float, FloatVector))
parameters = Dict(Str, Union(Instance(NumbaFuncParameter), Float, FloatVector, Str))
dynamic_parameters = OptionalInstance(DynamicParameter)
solver = Instance(Solver, EulerSolver)
monitors = List(Instance(Monitor), required=True)
t = Float(1000)