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)
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