HandX-demo / src /utils.py
xusirui's picture
HandX text-to-motion Gradio demo
2680bd5 verified
Raw
History Blame Contribute Delete
1.83 kB
import numpy as np
import pickle, json
import textwrap
def get_motion_data_boundary(motion:np.ndarray):
'''
motion: (T, J, 3)
'''
xmin = np.min(motion[:, :, 0])
xmax = np.max(motion[:, :, 0])
ymin = np.min(motion[:, :, 1])
ymax = np.max(motion[:, :, 1])
zmin = np.min(motion[:, :, 2])
zmax = np.max(motion[:, :, 2])
return xmin, xmax, ymin, ymax, zmin, zmax
def load_npy(file_path):
return np.load(file_path)
def save_npy(data, file_path):
np.save(file_path, data)
def save_json(data, file_path):
with open(file_path, 'w') as f:
json.dump(data, f, indent=4)
def load_pkl(file_path):
with open(file_path, 'rb') as f:
return pickle.load(f)
def save_pkl(data, file_path):
with open(file_path, 'wb') as f:
pickle.dump(data, f)
def load_txt(file_path):
with open(file_path, 'r', encoding="utf8") as f:
return f.read()
def load_json(file_path):
with open(file_path, 'r') as f:
return json.load(f)
def start_debug():
import debugpy
debugpy.listen(
('0.0.0.0', 5678) # Change the port if needed
)
print("--- Debugpy is listening on port 5678. Waiting for client to attach... ---")
debugpy.wait_for_client()
print("--- Client attached. Continuing execution... ---")
def debug():
import code
code.interact(local=locals())
def smart_wrap(text, width=70):
"""智能换行:保留原有段落结构,对每段分别换行"""
paragraphs = text.split('\n')
wrapped_paragraphs = []
for para in paragraphs:
if para.strip(): # 非空段落
wrapped = textwrap.fill(para, width=width)
wrapped_paragraphs.append(wrapped)
else: # 空行保留
wrapped_paragraphs.append('')
return '\n'.join(wrapped_paragraphs)