def test_support_to_activity(self):
        """

        :return:
        """

        duty_cycle = 0.75
        support_phases = [-0.25, 0.25, -1.25, -0.75]
        # activity_phases = [0, 0.5, -1.0, -0.5]

        activity_phases = configs.support_to_activity_phases(
            support_phases,
            duty_cycle
        )

        print('S->A:', activity_phases)
        self.assertEqual(activity_phases[0], 0)
        self.assertEqual(activity_phases[1], 0.5)
        self.assertEqual(activity_phases[2], -1.0)
        self.assertEqual(activity_phases[3], -0.5)
def load_activity_phases(settings: dict) -> limb.Property:
    """
    Returns the loaded activity phases as defined by the settings object

    :param settings:
        Configuration for the simulation trial
    """

    if 'activity_phases' in settings:
        settings['activity_phases'] = configs.to_phases_list(
            settings['activity_phases']
        )
    else:
        out = configs.support_to_activity_phases(
            settings['support_phases'],
            settings['duty_cycle']
        )

        # Zero the calculated settings around the lowest pes phase
        settings['activity_phases'] = [x - min(out[:2]) for x in out]

    if 'support_phases' in settings:
        settings['support_phases'] = configs.to_phases_list(
            settings['support_phases']
        )
    else:
        out = configs.activity_to_support_phases(
            settings['activity_phases'],
            settings['duty_cycle']
        )

        # Zero the calculated settings around the lowest pes phase
        settings['support_phases'] = [x - min(out[:2]) for x in out]

    out = limb.Property()
    source = settings['activity_phases']

    if isinstance(source, (list, tuple)):
        return out.assign(*source)

    return out.assign(**source)