コード例 #1
0
    def test_trackway_positions(self):
        """

        :return:
        """

        count = 12
        step_size = 3.7
        lateral_displacement = 0.2

        phases = limb.Property(
            left_pes=0.0,
            right_pes=0.5,
            left_manus=0.25,
            right_manus=0.75
        )

        positions = generate.trackway_positions(
            cycle_count=count,
            step_size=step_size,
            track_offsets=phases,
            lateral_displacement=lateral_displacement
        )

        self.assertIsInstance(positions, limb.Property)

        for key, series in positions.items():
            self.assertEqual(len(series), count)
            self.assertAlmostEquals(
                    step_size,
                    series[1].x.value - series[0].x.value)
コード例 #2
0
def load_trackway_positions(
        settings: dict,
        existing: limb.Property = None,
        save_as: str = None
) -> limb.Property:
    """
    Loads the trackway positions for the trial from the information provided in
    the settings object, unless an existing trackway positions object has been
    specified

    :param settings:
        Configuration for the simulation trial
    :param existing:
        Optionally the already loaded trackway positions, which will be cloned
        and returned if present
    :param save_as:
        An optional path where the loaded trackway positions shold be saved
    """

    if existing:
        # Ignore if already specified
        return existing.clone()

    data = settings.get('data')

    if isinstance(data, str):
        # Load from a specified file
        if not data.startswith('/'):
            data = os.path.join(settings['path'], data)
        if not os.path.exists(data):
            system.log(
                """
                [ERROR]: No CSV source data exists at the path:

                    {}
                """.format(data)
            )
            raise FileNotFoundError('No CSV source file found')

        return trackway.load_positions_file(data)

    # Generate from configuration settings
    track_offsets = limb.Property().assign(*data['offsets'])
    out = generate.trackway_positions(
        cycle_count=data['count'],
        step_size=data['step_size'],
        track_offsets=track_offsets,
        lateral_displacement=data['lateral_displacement'],
        positional_uncertainty=data.get('uncertainty')
    )

    if not save_as and data.get('save'):
        save_as = data.get('save')

    if save_as:
        trackway.save_positions_file(
            trackway_positions=out,
            path=os.path.join(settings['directory'], save_as)
        )

    return out