def test_activity_to_support(self):
        """

        :return:
        """

        duty_cycle = 0.75
        activity_phases = [0, 0.5, -1.0, -0.5]

        support_phases = configs.activity_to_support_phases(
            activity_phases,
            duty_cycle
        )

        print('A->S:', support_phases)
        self.assertEqual(support_phases[0], -0.25)
        self.assertEqual(support_phases[1], 0.25)
        self.assertEqual(support_phases[2], -1.25)
        self.assertEqual(support_phases[3], -0.75)
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)