HillModel#

class HillModel(
simulation_time__ms: Quantity__ms,
time_step__ms: Quantity__ms,
muscle_parameters: Dict[str, Any],
n_motor_units_type1: int,
n_motor_units_type2: int,
initial_joint_angle__deg: float,
initial_muscle_length__L0: float = -1.0,
muscle_role: Literal['flexor', 'extensor'] = 'flexor',
)[source]#

Bases: object

API wrapper for the Hill muscle model.

This class provides an intuitive interface for creating Hill muscle models with user-friendly parameter names that are internally mapped to the correct format expected by the underlying Hill implementation.

Parameters:
  • simulation_time__ms (float) – Total simulation time in milliseconds

  • time_step__ms (float) – Integration time step in milliseconds

  • muscle_parameters (Dict[str, Any]) – Dictionary containing Hill muscle model parameters

  • n_motor_units_type1 (int) – Number of type I motor units

  • n_motor_units_type2 (int) – Number of type II motor units

  • initial_joint_angle__deg (float) – Initial joint angle in degrees

  • initial_muscle_length__L0 (float, optional) – Initial muscle length normalized to L0. If -1, automatically calculated from joint angle. Must be between 0.7 and 1.3 if specified.

  • muscle_role (str, optional) – Muscle role for antagonist pairs (“flexor” or “extensor”), by default “flexor”. Used for joint dynamics calculations and result organization.

Methods

__init__

add_spike

Add a spike event for a specific motor unit.

create_default_muscle_parameters

Create default muscle parameter dictionary.

integrate

Integrate the muscle model for one time step.

Attributes

F0

Get maximum isometric force (F0) in Newtons.

L0

Get optimal muscle length (L0) in meters.

motor_unit_forces

Get individual motor unit forces matrix (N_units x time_points).

muscle_acceleration

Get muscle acceleration time series (L0/s^2).

muscle_force

Get muscle force time series (normalized to F0).

muscle_length

Get muscle length time series (normalized to L0).

muscle_torque

Get muscle torque time series (F0*m).

muscle_velocity

Get muscle velocity time series (L0/s).

signed_muscle_torque

Get muscle torque with correct sign for joint dynamics (F0*m).

time_vector

Get simulation time vector in milliseconds.

type1_activation

Get Type I motor unit activation time series.

type2_activation

Get Type II motor unit activation time series.

add_spike(motor_unit_id: int, delay__ms: float = 0.0) None[source]#

Add a spike event for a specific motor unit.

Parameters:
  • motor_unit_id (int) – ID of the motor unit (0-based index)

  • delay__ms (float, optional) – Spike delay in milliseconds, by default 0.0

Return type:

None

integrate(joint_angle__deg: float) tuple[float, float, float][source]#

Integrate the muscle model for one time step.

Parameters:

joint_angle__deg (float) – Current joint angle in degrees

Returns:

Muscle length (normalized to L0), velocity (L0/s), acceleration (L0/s^2)

Return type:

tuple[float, float, float]

property muscle_length: ndarray#

Get muscle length time series (normalized to L0).

property muscle_velocity: ndarray#

Get muscle velocity time series (L0/s).

property muscle_acceleration: ndarray#

Get muscle acceleration time series (L0/s^2).

property muscle_force: ndarray#

Get muscle force time series (normalized to F0).

property muscle_torque: ndarray#

Get muscle torque time series (F0*m).

property signed_muscle_torque: ndarray#

Get muscle torque with correct sign for joint dynamics (F0*m).

property type1_activation: ndarray#

Get Type I motor unit activation time series.

property type2_activation: ndarray#

Get Type II motor unit activation time series.

property motor_unit_forces: ndarray#

Get individual motor unit forces matrix (N_units x time_points).

property time_vector: ndarray#

Get simulation time vector in milliseconds.

property F0: float#

Get maximum isometric force (F0) in Newtons.

property L0: float#

Get optimal muscle length (L0) in meters.

static create_default_muscle_parameters(
muscle_type: str = 'FDI',
) Dict[str, Any][source]#

Create default muscle parameter dictionary.

Parameters:

muscle_type (str, optional) – Type of muscle model (“FDI”, “Sol”), by default “FDI”

Returns:

Dictionary of muscle parameters

Return type:

Dict[str, Any]

Raises:

ValueError – If muscle_type is not recognized