jmontp's picture
First commit
0ba5e0d
import numpy as np
def generate_task_info_name(walking_type, incline, walking_speed):
"""
Generate a standardized 'task_info' name string based on the walking type, incline, and walking speed.
The returned string follows the format:
For level walking: "{walking_type}_{formatted_speed}"
For incline/decline: "{walking_type}_{incline}_deg_{formatted_speed}"
where:
- walking_type is expected to be one of:
'decline_walking', 'level_walking', or 'incline_walking'
- incline is a numerical value indicating ground incline in degrees.
- formatted_speed is a walking speed string, e.g., 's0x8' for 0.8 m/s, 's1' for 1.0 m/s, 's1x2' for 1.2 m/s.
Args:
walking_type (str): The type of walking. Expected values: 'decline_walking', 'level_walking', or 'incline_walking'.
incline (float or int): Ground incline in degrees.
walking_speed (float): Walking speed in m/s.
Returns:
str: The generated task_info name.
Examples:
>>> generate_task_info_name('decline_walking', -5, 0.8)
'decline_walking_5_deg_s0x8'
>>> generate_task_info_name('level_walking', 0, 1.0)
'level_walking_s1'
>>> generate_task_info_name('incline_walking', 5, 1.2)
'incline_walking_5_deg_s1x2'
"""
if 'stair' in walking_type:
return walking_type
if walking_type != 'level_walking' and (np.isnan(incline) or incline is None):
print(f"Incline is NaN for task {walking_type} {incline} {walking_speed}")
return None
if np.isnan(walking_speed) or walking_speed is None:
print(f"Walking speed is NaN for task {walking_type} {incline} {walking_speed}")
return None
def format_walking_speed(speed):
# Map known speeds to specific string representations
mapping = {0.8: "s0x8", 1.0: "s1", 1.2: "s1x2"}
# Use the mapping if available, otherwise default to a generic string
return mapping.get(speed, f"s{speed}")
# Format walking speed
speed_str = format_walking_speed(walking_speed)
# For level walking, return simpler format without incline info
if walking_type == 'level_walking':
return f"{walking_type}_{speed_str}"
# Format incline: if the value is an integer, do not show decimals.
if incline == int(incline):
incline_str = str(abs(int(incline)))
else:
incline_str = str(abs(incline))
# Build and return the standardized task_info string for incline/decline walking
task_info = f"{walking_type}_{incline_str}_deg_{speed_str}_m_s"
return task_info