3_test.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """IMU放置于人体模型后的motion capture分析,包括离线、在线。读入或在线接入数据进行波形绘制、数据分析及分析结果的人体模型渲染和结果图表"""
  2. import streamlit as st
  3. import os
  4. from datetime import datetime
  5. from db import subject
  6. from db import test
  7. from components.remove_style import hide_footer
  8. import page_utils
  9. def _create_test(conn, subjects):
  10. with st.form("test_form"):
  11. st.write("创建训练")
  12. position = st.selectbox("训练部位", ['左手', '右手'])
  13. finger_model_names = st.multiselect("气动手手势", list(page_utils.fingermodel_trans.keys()))
  14. owner_name = st.selectbox("用户", subjects.name.to_list())
  15. model_path = page_utils.file_selector(os.path.join(f'./model/{owner_name}'))
  16. submitted = st.form_submit_button("开始训练")
  17. if submitted:
  18. start_time = datetime.strptime(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")
  19. test_new = {"position": position,
  20. "finger_model": ','.join([page_utils.fingermodel_trans[f] for f in finger_model_names]),
  21. "start_time": start_time,
  22. "owner_name": owner_name,
  23. "model_path": model_path.name if model_path is not None else None}
  24. test.create_test(conn, test_new)
  25. # TODO: run a psychopy process
  26. return owner_name
  27. def render():
  28. st.set_page_config(
  29. page_title="自由手势训练", page_icon=":chart_with_upwards_trend:"
  30. )
  31. hide_footer()
  32. st.markdown("# 自由手势训练")
  33. st.sidebar.success("训练")
  34. conn = st.connection("sql_app", type="sql")
  35. test.create_table(conn)
  36. subjects = subject.get_subjects(conn)
  37. sub_name = _create_test(conn, subjects)
  38. if sub_name:
  39. tests = test.get_tests(conn, sub_name)
  40. st.write("# 训练列表")
  41. st.dataframe(tests)
  42. render()