From d680111ff76f2d9f9552704110f33b5d9e1f110d Mon Sep 17 00:00:00 2001 From: Antoine Falisse Date: Fri, 22 Mar 2024 10:49:55 -0700 Subject: [PATCH 1/5] adding examples for trimming videos and upload the db --- Examples/example_trim_videos.py | 308 ++++++++++++++++++++++++++++++++ utils.py | 17 ++ 2 files changed, 325 insertions(+) create mode 100644 Examples/example_trim_videos.py diff --git a/Examples/example_trim_videos.py b/Examples/example_trim_videos.py new file mode 100644 index 00000000..853c968b --- /dev/null +++ b/Examples/example_trim_videos.py @@ -0,0 +1,308 @@ +import os +import sys +sys.path.append("..") +import numpy as np +import json + +from utils import get_trial_id, get_trial_json, download_file, post_video_to_trial, delete_video_from_trial + +data_folder = os.path.join("../Data/Parker") +os.makedirs(data_folder, exist_ok=True) + + +# bad_data_trim_needed = \ +# {'057d10da-34c7-4fb7-a127-6040010dde06': {'name': 'brooke_sit', +# 'session': '057d10da-34c7-4fb7-a127-6040010dde06'}, +# # '18f57fa8-41a0-4d8d-b7a3-d0c838516f24': {'name': 'brooke', +# # 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24'}, +# # '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff': {'name': 'brooke', +# # 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff'}, +# # '8bf259f7-000f-4474-9ad4-255949bdaf71': {'name': 'brooke', +# # 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71'} +# } + +bad_data_trim_needed = \ +{ + '54d4868a-9351-4844-b56c-c0c24bcb24e3': {'name': 'test', + 'start': 0.2, 'end': 1}, + # 'f5ec71e8-7898-4c51-993b-897014a3e8e3': {'name': '10mwrt', + # 'start': 0, 'end': 4}, +# '18f57fa8-41a0-4d8d-b7a3-d0c838516f24': {'name': 'brooke', +# 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24'}, +# '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff': {'name': 'brooke', +# 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff'}, +# '8bf259f7-000f-4474-9ad4-255949bdaf71': {'name': 'brooke', +# 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71'} + } + +def get_video_info(video_file): + # Define the ffprobe command to get frame rate + frame_rate_cmd = f'ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1 {video_file}' + # Execute the ffprobe command to get frame rate + frame_rate_output = os.popen(frame_rate_cmd).read().strip() + + # Define the ffprobe command to get number of frames + frame_count_cmd = f'ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 {video_file}' + # Execute the ffprobe command to get number of frames + frame_count_output = os.popen(frame_count_cmd).read().strip() + + # Parse the output and convert to appropriate data types + frame_rate = eval(frame_rate_output) if frame_rate_output else None + frame_count = int(frame_count_output) if frame_count_output else None + + return frame_rate, frame_count + +def trim_video_by_frames(video_path, start_frame, frame_duration, trimmed_video_path): + # Build the ffmpeg command to trim without re-encoding + ffmpeg_cmd = f'ffmpeg -i {video_path} -ss {start_frame / frame_rate} -frames:v {frame_duration} -c:v copy -c:a copy {trimmed_video_path}' + + os.system(ffmpeg_cmd) + + +for count, session_id in enumerate(bad_data_trim_needed): + trial_name = bad_data_trim_needed[session_id]['name'] + trial_id = get_trial_id(session_id, trial_name) + trial_json = get_trial_json(trial_id) + for k, video in enumerate(trial_json["videos"]): + + # Download the video + videoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "InputMedia") + os.makedirs(videoDir, exist_ok=True) + video_path = os.path.join(videoDir, trial_id + ".mov") + download_file(video["video"], video_path) + + # Trim the video + frame_rate, frame_count = get_video_info(video_path) + video_duration = frame_count / frame_rate + n_frame_trim_start = int(np.floor(bad_data_trim_needed[session_id]['start'] * frame_rate)) + desired_num_frames = int(np.floor((bad_data_trim_needed[session_id]['end'] - bad_data_trim_needed[session_id]['start']) * frame_rate)) + trimmedVideoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "TrimmedInputMedia") + os.makedirs(trimmedVideoDir, exist_ok=True) + trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") + trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, trimmed_video_path) + + # Post the trimmed video + post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) + + # Delete the old video + delete_video_from_trial(video['id']) + + +# all_bad_data = \ +# {'002ea0b9-a2b6-4983-a876-275e3087ef1e': {'name': 'brooke', +# 'session': '002ea0b9-a2b6-4983-a876-275e3087ef1e'}, +# '057d10da-34c7-4fb7-a127-6040010dde06': {'name': 'brooke_sit', +# 'session': '057d10da-34c7-4fb7-a127-6040010dde06'}, +# '07d80cd7-3634-4485-b3a7-a9d592cf82b0': {'name': 'Brooke', +# 'session': '07d80cd7-3634-4485-b3a7-a9d592cf82b0'}, +# '109eabdf-e50d-459e-8917-c856338a720b': {'name': '10mwrt', +# 'session': '109eabdf-e50d-459e-8917-c856338a720b'}, +# '18f57fa8-41a0-4d8d-b7a3-d0c838516f24': {'name': 'brooke', +# 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24'}, +# '19788965-c4a4-481e-a687-f2055b6d85cb': {'name': 'stairs_descend', +# 'session': '19788965-c4a4-481e-a687-f2055b6d85cb'}, +# '1fc22b0c-1ef8-4b6d-b83b-85b12634905d': {'name': '10mwrt_1', +# 'session': '1fc22b0c-1ef8-4b6d-b83b-85b12634905d'}, +# '22fab7ce-b219-4c5d-84a4-e780816d46ea': {'name': 'tug_line_1', +# 'session': '22fab7ce-b219-4c5d-84a4-e780816d46ea'}, +# '25d785ae-f49e-4531-b14c-86d6d5e9d144': {'name': 'toe_stand', +# 'session': '25d785ae-f49e-4531-b14c-86d6d5e9d144'}, +# '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69': {'name': 'jump', +# 'session': '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69'}, +# '28ec73c6-025b-4ea4-b844-803e8205bf1a': {'name': 'brooke', +# 'session': '28ec73c6-025b-4ea4-b844-803e8205bf1a'}, +# '2aff7769-ee45-4e3d-a8cc-266d5b886a10': {'name': 'toe_stand', +# 'session': '2aff7769-ee45-4e3d-a8cc-266d5b886a10'}, +# '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f': {'name': 'tug_cone', +# 'session': '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f'}, +# '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b': {'name': '5xsts', +# 'session': '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b'}, +# '31b45d11-f909-42e5-b404-3451b4b6d238': {'name': 'TUG', +# 'session': '31b45d11-f909-42e5-b404-3451b4b6d238'}, +# '34f2095f-d076-4a3d-b094-75f968a93c21': {'name': 'jump', +# 'session': '34f2095f-d076-4a3d-b094-75f968a93c21'}, +# '38a56b81-3e2c-4854-93a4-333b66c8e0f1': {'name': 'toe_stand', +# 'session': '38a56b81-3e2c-4854-93a4-333b66c8e0f1'}, +# '3a681925-50b5-470e-a44a-c1cab743f58b': {'name': '10mwt', +# 'session': '3a681925-50b5-470e-a44a-c1cab743f58b'}, +# '41599e7a-8eea-4b03-b5ef-57502504e879': {'name': 'toe_stand', +# 'session': '41599e7a-8eea-4b03-b5ef-57502504e879'}, +# '43db734e-13fb-4d6d-9223-09f967dd40f0': {'name': 'toe_stand', +# 'session': '43db734e-13fb-4d6d-9223-09f967dd40f0'}, +# '4769f868-d487-4e0d-bda6-98eb6751b40a': {'name': 'jump', +# 'session': '4769f868-d487-4e0d-bda6-98eb6751b40a'}, +# '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff': {'name': 'brooke', +# 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff'}, +# '4d0cfa49-baa9-4e49-8b34-2bc6727f6052': {'name': '10mwt', +# 'session': '4d0cfa49-baa9-4e49-8b34-2bc6727f6052'}, +# '51003106-cdec-40f7-9204-0e21953bb4a7': {'name': '10mwt', +# 'session': '51003106-cdec-40f7-9204-0e21953bb4a7'}, +# '55566ced-e1be-4789-b265-b0168087a402': {'name': '10mwrt_1', +# 'session': '55566ced-e1be-4789-b265-b0168087a402'}, +# '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e': {'name': 'tug_line_1', +# 'session': '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e'}, +# '5a3dd4e7-7293-46e6-9c0c-b77e2511860d': {'name': '10mwrt', +# 'session': '5a3dd4e7-7293-46e6-9c0c-b77e2511860d'}, +# '621e5ae8-226b-4fc6-bbd9-df448328ff1f': {'name': 'jump_1', +# 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f'}, +# '623a4fe2-bc1e-4248-920a-e35416d1350d': {'name': '10mwrt', +# 'session': '623a4fe2-bc1e-4248-920a-e35416d1350d'}, +# '6537ecc8-e44b-4405-a9fe-c09ede5e0550': {'name': '5xsts', +# 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550'}, +# '65aa878e-4396-4a9c-a9a0-7a1e2c708f83': {'name': 'ARM_ROM', +# 'session': '65aa878e-4396-4a9c-a9a0-7a1e2c708f83'}, +# '68cf5eec-1d9b-4630-8585-c9094d2de82c': {'name': 'TUGCone', +# 'session': '68cf5eec-1d9b-4630-8585-c9094d2de82c'}, +# '6de88f3d-b84a-4ee5-8003-a5fbb994278e': {'name': '10mwt', +# 'session': '6de88f3d-b84a-4ee5-8003-a5fbb994278e'}, +# '715504d6-c823-4632-8c79-b7639bfdcf4a': {'name': 'tug_cone', +# 'session': '715504d6-c823-4632-8c79-b7639bfdcf4a'}, +# '725e0d28-d043-44bd-9f3e-0e58338a6bc4': {'name': '10mwrt', +# 'session': '725e0d28-d043-44bd-9f3e-0e58338a6bc4'}, +# '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86': {'name': 'TUGfast', +# 'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86'}, +# '76b201f8-1950-414e-a48a-97bf932c61bc': {'name': '10mwt', +# 'session': '76b201f8-1950-414e-a48a-97bf932c61bc'}, +# '773c33cd-a12d-46d2-af17-35fa7b4e83bd': {'name': 'tug_cone', +# 'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd'}, +# '78d9fbfe-04e0-4766-ba15-198e246d5e9c': {'name': '10mwt', +# 'session': '78d9fbfe-04e0-4766-ba15-198e246d5e9c'}, +# '7d9b3d14-2672-458a-94df-d35c7b5cdcf5': {'name': '5xsts', +# 'session': '7d9b3d14-2672-458a-94df-d35c7b5cdcf5'}, +# '822926eb-1c7d-4298-84c5-7ead6909387b': {'name': 'tug_cone_2', +# 'session': '822926eb-1c7d-4298-84c5-7ead6909387b'}, +# '8963b080-d316-4183-8928-47bebcac70b1': {'name': '10mwt', +# 'session': '8963b080-d316-4183-8928-47bebcac70b1'}, +# '8b7a734d-2874-42f7-94a2-c6026ec35d99': {'name': '10mwrt', +# 'session': '8b7a734d-2874-42f7-94a2-c6026ec35d99'}, +# '8bf259f7-000f-4474-9ad4-255949bdaf71': {'name': 'brooke', +# 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71'}, +# '8d2f7856-3996-462f-bb2b-f020e7053a90': {'name': 'Brooke', +# 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90'}, +# '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae': {'name': 'tug_cone', +# 'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae'}, +# '9108903d-26b3-479a-ad49-955aebb868c7': {'name': 'TUGfast', +# 'session': '9108903d-26b3-479a-ad49-955aebb868c7'}, +# '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36': {'name': '10mwt', +# 'session': '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36'}, +# '9871c398-0d02-450b-86a6-0d8c6b27b26d': {'name': '5xsts', +# 'session': '9871c398-0d02-450b-86a6-0d8c6b27b26d'}, +# '98fc0617-1f5e-44ba-92c9-a32f09899295': {'name': 'brooke', +# 'session': '98fc0617-1f5e-44ba-92c9-a32f09899295'}, +# '9c4666be-57f4-4a6b-9c51-7e394f4a53e1': {'name': 'tug_line', +# 'session': '9c4666be-57f4-4a6b-9c51-7e394f4a53e1'}, +# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1': {'name': '10mwrt', +# 'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1'}, +# '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a': {'name': '10mrt', +# 'session': '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a'}, +# 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d': {'name': 'tug_cone', +# 'session': 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d'}, +# 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a': {'name': '10mwt', +# 'session': 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a'}, +# 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab': {'name': 'brooke', +# 'session': 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab'}, +# 'a7675b05-88da-4bb0-b27b-5357c3ec5807': {'name': 'tug_cone', +# 'session': 'a7675b05-88da-4bb0-b27b-5357c3ec5807'}, +# 'aca92056-3f67-403c-8d6a-513055274ffe': {'name': '5xsts', +# 'session': 'aca92056-3f67-403c-8d6a-513055274ffe'}, +# 'ace248c9-61a6-4c41-93eb-83edd823de0c': {'name': 'toe_stand', +# 'session': 'ace248c9-61a6-4c41-93eb-83edd823de0c'}, +# 'b233300d-2c6d-4735-aadb-c597da014629': {'name': 'ELBOWROM', +# 'session': 'b233300d-2c6d-4735-aadb-c597da014629'}, +# 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce': {'name': '10mwrt', +# 'session': 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce'}, +# 'bb12568e-2303-4f87-95e4-baec67f2c023': {'name': 'tug_cone', +# 'session': 'bb12568e-2303-4f87-95e4-baec67f2c023'}, +# 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673': {'name': '5TSTS', +# 'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673'}, +# 'bca0aad8-c129-4a62-bef3-b5de1659df5e': {'name': 'tug_cone', +# 'session': 'bca0aad8-c129-4a62-bef3-b5de1659df5e'}, +# 'c2001341-2624-4595-91d1-9af78ed76421': {'name': '10mwt_1', +# 'session': 'c2001341-2624-4595-91d1-9af78ed76421'}, +# 'ca174c27-d0fe-4edd-8799-9ef3ea053086': {'name': 'JUMP', +# 'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086'}, +# 'ca44b787-96c1-4ed3-8151-89b4bd4310c4': {'name': 'toe_stand', +# 'session': 'ca44b787-96c1-4ed3-8151-89b4bd4310c4'}, +# 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375': {'name': '5TSTS', +# 'session': 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375'}, +# 'cda2db6e-b268-42ee-99d0-9cc358e893d1': {'name': '10mwrt', +# 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1'}, +# 'cdb103d7-e1a7-4f67-bf74-e335f79b471c': {'name': '10MWT_2', +# 'session': 'cdb103d7-e1a7-4f67-bf74-e335f79b471c'}, +# 'ce0fdd88-53b6-4974-92fb-a720b93d1623': {'name': '5xsts', +# 'session': 'ce0fdd88-53b6-4974-92fb-a720b93d1623'}, +# 'd10ea979-2a29-4bd7-a3ac-d475b5878134': {'name': 'toe_stand', +# 'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134'}, +# 'd37407d6-83a8-44f8-b5b2-c651db8edd9f': {'name': 'jump', +# 'session': 'd37407d6-83a8-44f8-b5b2-c651db8edd9f'}, +# 'd9538893-e95c-4e28-960e-dd4aa0760942': {'name': 'tug_line', +# 'session': 'd9538893-e95c-4e28-960e-dd4aa0760942'}, +# 'dac69d8a-0790-48ea-9296-66b5903d9ba8': {'name': '10mwrt_2', +# 'session': 'dac69d8a-0790-48ea-9296-66b5903d9ba8'}, +# 'dc497821-4eac-49e0-87ac-c088d1245edb': {'name': '10mwt_1', +# 'session': 'dc497821-4eac-49e0-87ac-c088d1245edb'}, +# 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e': {'name': 'curls', +# 'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e'}, +# 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5': {'name': '10MWRT', +# 'session': 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5'}, +# 'df982665-8e59-4691-88f8-611ccbfe7f4a': {'name': 'brooke', +# 'session': 'df982665-8e59-4691-88f8-611ccbfe7f4a'}, +# 'e4d2328b-6f01-4f4e-bea3-64076357de64': {'name': '10mwrt', +# 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64'}, +# 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36': {'name': '10mwt', +# 'session': 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36'}, +# 'ead8a2fc-c926-464f-9965-d155a62eead8': {'name': 'curls', +# 'session': 'ead8a2fc-c926-464f-9965-d155a62eead8'}, +# 'ee86be93-b1da-4080-b445-176f6071e734': {'name': '10mwt_2', +# 'session': 'ee86be93-b1da-4080-b445-176f6071e734'}, +# 'f249a8d6-9965-4240-94c3-e42a6b4bccf6': {'name': 'brooke', +# 'session': 'f249a8d6-9965-4240-94c3-e42a6b4bccf6'}, +# 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85': {'name': 'jump', +# 'session': 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85'}, +# 'f5ec71e8-7898-4c51-993b-897014a3e8e3': {'name': '10mwrt', +# 'session': 'f5ec71e8-7898-4c51-993b-897014a3e8e3'}, +# 'fa856382-bf8d-411a-b086-a2d74fab9d1b': {'name': '10mrt', +# 'session': 'fa856382-bf8d-411a-b086-a2d74fab9d1b'}, +# 'faa79e6d-f90e-4399-8b68-9e9f2dd00027': {'name': 'HOP', +# 'session': 'faa79e6d-f90e-4399-8b68-9e9f2dd00027'}} + + + +# bad_data_server_failed = \ +# {'31b45d11-f909-42e5-b404-3451b4b6d238': {'name': 'TUG', +# 'session': '31b45d11-f909-42e5-b404-3451b4b6d238'}, +# '41599e7a-8eea-4b03-b5ef-57502504e879': {'name': 'toe_stand', +# 'session': '41599e7a-8eea-4b03-b5ef-57502504e879'}, +# '4769f868-d487-4e0d-bda6-98eb6751b40a': {'name': 'jump', +# 'session': '4769f868-d487-4e0d-bda6-98eb6751b40a'}, +# '621e5ae8-226b-4fc6-bbd9-df448328ff1f': {'name': 'jump_1', +# 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f'}, +# '6537ecc8-e44b-4405-a9fe-c09ede5e0550': {'name': '5xsts', +# 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550'}, +# '76b201f8-1950-414e-a48a-97bf932c61bc': {'name': '10mwt', +# 'session': '76b201f8-1950-414e-a48a-97bf932c61bc'}, +# '8d2f7856-3996-462f-bb2b-f020e7053a90': {'name': 'Brooke', +# 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90'}, +# '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae': {'name': '10mwt', +# 'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae'}, +# '9108903d-26b3-479a-ad49-955aebb868c7': {'name': 'Curl', +# 'session': '9108903d-26b3-479a-ad49-955aebb868c7'}, +# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1': {'name': '10mwrt', +# 'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1'}, +# 'b233300d-2c6d-4735-aadb-c597da014629': {'name': 'ELBOWROM', +# 'session': 'b233300d-2c6d-4735-aadb-c597da014629'}, +# 'c2001341-2624-4595-91d1-9af78ed76421': {'name': '10mwt_1', +# 'session': 'c2001341-2624-4595-91d1-9af78ed76421'}, +# 'ca174c27-d0fe-4edd-8799-9ef3ea053086': {'name': 'JUMP', +# 'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086'}, +# 'cda2db6e-b268-42ee-99d0-9cc358e893d1': {'name': '10mwrt', +# 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1'}, +# 'e4d2328b-6f01-4f4e-bea3-64076357de64': {'name': '10mwrt', +# 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64'}, +# 'ee86be93-b1da-4080-b445-176f6071e734': {'name': '10mwt_2', +# 'session': 'ee86be93-b1da-4080-b445-176f6071e734'}, +# 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85': {'name': 'jump', +# 'session': 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85'}, +# 'f5ec71e8-7898-4c51-993b-897014a3e8e3': {'name': '10mwrt', +# 'session': 'f5ec71e8-7898-4c51-993b-897014a3e8e3'}} + diff --git a/utils.py b/utils.py index 850f342d..9dc10af7 100644 --- a/utils.py +++ b/utils.py @@ -558,6 +558,23 @@ def post_file_to_trial(filePath,trial_id,tag,device_id): requests.post("{}results/".format(API_URL), files=files, data=data, headers = {"Authorization": "Token {}".format(API_TOKEN)}) files["media"].close() + +def post_video_to_trial(filePath,trial_id,device_id,parameters): + files = {'video': open(filePath, 'rb')} + data = { + "trial": trial_id, + "device_id" : device_id, + "parameters": parameters + } + + requests.post("{}videos/".format(API_URL), files=files, data=data, + headers = {"Authorization": "Token {}".format(API_TOKEN)}) + files["video"].close() + +def delete_video_from_trial(video_id): + + requests.delete("{}videos/{}/".format(API_URL, video_id), + headers = {"Authorization": "Token {}".format(API_TOKEN)}) def get_syncd_videos(trial_id,session_path): From 42db95349dc13313c59052bb665f2f2785b1607a Mon Sep 17 00:00:00 2001 From: Antoine Falisse Date: Fri, 22 Mar 2024 16:12:55 -0700 Subject: [PATCH 2/5] trim_videos --- Examples/example_trim_videos.py | 793 +++++++++++++++++++++----------- 1 file changed, 532 insertions(+), 261 deletions(-) diff --git a/Examples/example_trim_videos.py b/Examples/example_trim_videos.py index 853c968b..65084d0a 100644 --- a/Examples/example_trim_videos.py +++ b/Examples/example_trim_videos.py @@ -9,31 +9,521 @@ data_folder = os.path.join("../Data/Parker") os.makedirs(data_folder, exist_ok=True) - -# bad_data_trim_needed = \ -# {'057d10da-34c7-4fb7-a127-6040010dde06': {'name': 'brooke_sit', -# 'session': '057d10da-34c7-4fb7-a127-6040010dde06'}, -# # '18f57fa8-41a0-4d8d-b7a3-d0c838516f24': {'name': 'brooke', -# # 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24'}, -# # '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff': {'name': 'brooke', -# # 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff'}, -# # '8bf259f7-000f-4474-9ad4-255949bdaf71': {'name': 'brooke', -# # 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71'} -# } - -bad_data_trim_needed = \ +all_bad_data = \ { - '54d4868a-9351-4844-b56c-c0c24bcb24e3': {'name': 'test', - 'start': 0.2, 'end': 1}, - # 'f5ec71e8-7898-4c51-993b-897014a3e8e3': {'name': '10mwrt', - # 'start': 0, 'end': 4}, -# '18f57fa8-41a0-4d8d-b7a3-d0c838516f24': {'name': 'brooke', -# 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24'}, -# '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff': {'name': 'brooke', -# 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff'}, -# '8bf259f7-000f-4474-9ad4-255949bdaf71': {'name': 'brooke', -# 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71'} - } + 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_000': {'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', + 'name': 'arm_rom', + 'start': np.nan, + 'end': np.nan}, + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_001': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', + 'name': '10mrt', + 'start': np.nan, + 'end': np.nan}, + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_002': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', + 'name': '10mwt', + 'start': np.nan, + 'end': np.nan}, + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_003': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', + 'name': '5xSTS', + 'start': np.nan, + 'end': np.nan}, + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_004': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', + 'name': 'Curl', + 'start': np.nan, + 'end': np.nan}, + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_005': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', + 'name': 'SHLD_ROM', + 'start': np.nan, + 'end': np.nan}, + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_006': {'name': 'TUGfast',# coming very close to the end + 'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', + 'start': np.nan, + 'end': np.nan}, + 'dac69d8a-0790-48ea-9296-66b5903d9ba8_007': {'session': 'dac69d8a-0790-48ea-9296-66b5903d9ba8', + 'name': '10mwt', + 'start': np.nan, + 'end': np.nan}, + 'd9538893-e95c-4e28-960e-dd4aa0760942_008': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', + 'name': 'brooke', + 'start': np.nan, + 'end': np.nan}, + 'd9538893-e95c-4e28-960e-dd4aa0760942_009': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', + 'name': 'tug_cone', + 'start': np.nan, + 'end': np.nan}, + 'd9538893-e95c-4e28-960e-dd4aa0760942_010': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', + 'name': '10mwt', + 'start': np.nan, + 'end': np.nan}, + 'd9538893-e95c-4e28-960e-dd4aa0760942_011': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', + 'name': '10mwrt', + 'start': np.nan, + 'end': np.nan}, + 'd9538893-e95c-4e28-960e-dd4aa0760942_012': {'name': 'tug_line', + 'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', + 'start': np.nan, + 'end': np.nan}, + '8963b080-d316-4183-8928-47bebcac70b1_013': {'name': '10mwt',# TO REPROCESS, not sure it will help + 'session': '8963b080-d316-4183-8928-47bebcac70b1', + 'start': 0, + 'end': 9}, + 'b233300d-2c6d-4735-aadb-c597da014629_014': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', + 'name': '10MRT', + 'start': np.nan, + 'end': np.nan}, + 'fa856382-bf8d-411a-b086-a2d74fab9d1b_015': {'name': '10mrt', + 'session': 'fa856382-bf8d-411a-b086-a2d74fab9d1b', + 'start': np.nan, + 'end': np.nan}, + '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_016': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', + 'name': '10mwrt_1', + 'start': np.nan, + 'end': np.nan}, + '9c4666be-57f4-4a6b-9c51-7e394f4a53e1_017': {'name': 'tug_line', # person in the fov + 'session': '9c4666be-57f4-4a6b-9c51-7e394f4a53e1', + 'start': 2, + 'end': 10}, + 'f249a8d6-9965-4240-94c3-e42a6b4bccf6_018': {'name': 'brooke', + 'session': 'f249a8d6-9965-4240-94c3-e42a6b4bccf6', + 'start': np.nan, + 'end': np.nan}, + '43db734e-13fb-4d6d-9223-09f967dd40f0_019': {'name': 'toe_stand', # nothing obvious + 'session': '43db734e-13fb-4d6d-9223-09f967dd40f0', + 'start': np.nan, + 'end': np.nan}, + '8b7a734d-2874-42f7-94a2-c6026ec35d99_020': {'name': '10mwrt',# fast run + 'session': '8b7a734d-2874-42f7-94a2-c6026ec35d99', + 'start': np.nan, + 'end': np.nan}, + 'ead8a2fc-c926-464f-9965-d155a62eead8_021': {'name': 'curls', + 'session': 'ead8a2fc-c926-464f-9965-d155a62eead8', + 'start': np.nan, + 'end': np.nan}, + 'dc497821-4eac-49e0-87ac-c088d1245edb_022': {'name': '10mwt_1', + 'session': 'dc497821-4eac-49e0-87ac-c088d1245edb', + 'start': np.nan, + 'end': np.nan}, + 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d_023': {'session': 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d', + 'name': '10mwrt_2', + 'start': np.nan, + 'end': np.nan}, + '38a56b81-3e2c-4854-93a4-333b66c8e0f1_024': {'name': 'toe_stand',# nothing obvious + 'session': '38a56b81-3e2c-4854-93a4-333b66c8e0f1', + 'start': np.nan, + 'end': np.nan}, + '9108903d-26b3-479a-ad49-955aebb868c7_025': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', + 'name': '5TSTS', + 'start': np.nan, + 'end': np.nan}, + '002ea0b9-a2b6-4983-a876-275e3087ef1e_026': {'name': 'brooke', # nothing obvious + 'session': '002ea0b9-a2b6-4983-a876-275e3087ef1e', + 'start': np.nan, + 'end': np.nan}, + 'b233300d-2c6d-4735-aadb-c597da014629_027': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', + 'name': 'TUG', + 'start': np.nan, + 'end': np.nan}, + '68cf5eec-1d9b-4630-8585-c9094d2de82c_028': {'name': 'TUGCone',# leaving the fov + 'session': '68cf5eec-1d9b-4630-8585-c9094d2de82c', + 'start': np.nan, + 'end': np.nan}, + 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36_029': {'session': 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36', + 'name': '10mwrt', + 'start': np.nan, + 'end': np.nan}, + '3a681925-50b5-470e-a44a-c1cab743f58b_030': {'name': '10mwt',# nothing obvious, quality seems bad (clinic) + 'session': '3a681925-50b5-470e-a44a-c1cab743f58b', + 'start': np.nan, + 'end': np.nan}, + '773c33cd-a12d-46d2-af17-35fa7b4e83bd_031': {'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd', + 'name': '10mrt', + 'start': np.nan, + 'end': np.nan}, + '725e0d28-d043-44bd-9f3e-0e58338a6bc4_032': {'name': '10mwrt', # TO REPROCESS + 'session': '725e0d28-d043-44bd-9f3e-0e58338a6bc4', + 'start': 0, + 'end': 10}, + 'ace248c9-61a6-4c41-93eb-83edd823de0c_033': {'name': 'toe_stand', + 'session': 'ace248c9-61a6-4c41-93eb-83edd823de0c', + 'start': np.nan, + 'end': np.nan}, + 'cdb103d7-e1a7-4f67-bf74-e335f79b471c_034': {'name': '10MWT_2', + 'session': 'cdb103d7-e1a7-4f67-bf74-e335f79b471c', + 'start': np.nan, + 'end': np.nan}, + 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375_035': {'name': '5TSTS', + 'session': 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375', + 'start': np.nan, + 'end': np.nan}, + '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e_036': {'name': 'tug_line_1',# nothing obvious, quality seems bad (clinic) + 'session': '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e', + 'start': np.nan, + 'end': np.nan}, + 'ce0fdd88-53b6-4974-92fb-a720b93d1623_037': {'name': '5xsts', + 'session': 'ce0fdd88-53b6-4974-92fb-a720b93d1623', + 'start': np.nan, + 'end': np.nan}, + 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a_038': {'name': '10mwt', + 'session': 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a', + 'start': np.nan, + 'end': np.nan}, + '623a4fe2-bc1e-4248-920a-e35416d1350d_039': {'name': '10mwrt',# fast run + 'session': '623a4fe2-bc1e-4248-920a-e35416d1350d', + 'start': np.nan, + 'end': np.nan}, + 'd10ea979-2a29-4bd7-a3ac-d475b5878134_040': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', + 'name': 'jump', + 'start': np.nan, + 'end': np.nan}, + 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_041': {'name': 'curls', + 'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', + 'start': np.nan, + 'end': np.nan}, + '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36_042': {'name': '10mwt', + 'session': '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36', + 'start': np.nan, + 'end': np.nan}, + 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce_043': {'name': '10mwrt', + 'session': 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce', + 'start': np.nan, + 'end': np.nan}, + '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_044': {'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', + 'name': 'brooke', + 'start': np.nan, + 'end': np.nan}, + 'dac69d8a-0790-48ea-9296-66b5903d9ba8_045': {'name': '10mwrt_2', + 'session': 'dac69d8a-0790-48ea-9296-66b5903d9ba8', + 'start': np.nan, + 'end': np.nan}, + 'b233300d-2c6d-4735-aadb-c597da014629_046': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', + 'name': 'SHLDRAROM', + 'start': np.nan, + 'end': np.nan}, + 'd10ea979-2a29-4bd7-a3ac-d475b5878134_047': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', + 'name': 'arm_rom', + 'start': np.nan, + 'end': np.nan}, + 'd10ea979-2a29-4bd7-a3ac-d475b5878134_048': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', + 'name': 'curls', + 'start': np.nan, + 'end': np.nan}, + 'd10ea979-2a29-4bd7-a3ac-d475b5878134_049': {'name': 'toe_stand', + 'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', + 'start': np.nan, + 'end': np.nan}, + '19788965-c4a4-481e-a687-f2055b6d85cb_050': {'session': '19788965-c4a4-481e-a687-f2055b6d85cb', + 'name': 'stairs_ascend', + 'start': np.nan, + 'end': np.nan}, + 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5_051': {'session': 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5', + 'name': 'TUG_LINE', + 'start': np.nan, + 'end': np.nan}, + '22fab7ce-b219-4c5d-84a4-e780816d46ea_052': {'name': 'tug_line_1', # exiting the fov + 'session': '22fab7ce-b219-4c5d-84a4-e780816d46ea', + 'start': np.nan, + 'end': np.nan}, + '8d2f7856-3996-462f-bb2b-f020e7053a90_053': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', + 'name': '10MWT', + 'start': np.nan, + 'end': np.nan}, + '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b_054': {'name': '5xsts',# nothing obvious, quality seems bad (clinic) + 'session': '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b', + 'start': np.nan, + 'end': np.nan}, + '8d2f7856-3996-462f-bb2b-f020e7053a90_055': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', + 'name': '10MRT', + 'start': np.nan, + 'end': np.nan}, + '19788965-c4a4-481e-a687-f2055b6d85cb_056': {'name': 'stairs_descend', + 'session': '19788965-c4a4-481e-a687-f2055b6d85cb', + 'start': np.nan, + 'end': np.nan}, + 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab_057': {'name': 'brooke', + 'session': 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab', + 'start': np.nan, + 'end': np.nan}, + 'df982665-8e59-4691-88f8-611ccbfe7f4a_058': {'name': 'brooke', + 'session': 'df982665-8e59-4691-88f8-611ccbfe7f4a', + 'start': np.nan, + 'end': np.nan}, + '9871c398-0d02-450b-86a6-0d8c6b27b26d_059': {'name': '5xsts', + 'session': '9871c398-0d02-450b-86a6-0d8c6b27b26d', + 'start': np.nan, + 'end': np.nan}, + '2aff7769-ee45-4e3d-a8cc-266d5b886a10_060': {'name': 'toe_stand',# nothing obvious except wearing a dress. + 'session': '2aff7769-ee45-4e3d-a8cc-266d5b886a10', + 'start': np.nan, + 'end': np.nan}, + '057d10da-34c7-4fb7-a127-6040010dde06_061': {'name': 'brooke_sit', # nothing obvious + 'session': '057d10da-34c7-4fb7-a127-6040010dde06', + 'start': np.nan, + 'end': np.nan}, + '8bf259f7-000f-4474-9ad4-255949bdaf71_062': {'name': 'brooke',# nothing obvious + 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71', + 'start': np.nan, + 'end': np.nan}, + '18f57fa8-41a0-4d8d-b7a3-d0c838516f24_063': {'name': 'brooke', # hands hidden + 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24', + 'start': np.nan, + 'end': np.nan}, + '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff_064': {'name': 'brooke',# nothing obvious + 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff', + 'start': np.nan, + 'end': np.nan}, + '55566ced-e1be-4789-b265-b0168087a402_065': {'name': '10mwrt_1', + 'session': '55566ced-e1be-4789-b265-b0168087a402', + 'start': np.nan, + 'end': np.nan}, + '822926eb-1c7d-4298-84c5-7ead6909387b_066': {'session': '822926eb-1c7d-4298-84c5-7ead6909387b', + 'name': 'tug_cone_1', + 'start': np.nan, + 'end': np.nan}, + '822926eb-1c7d-4298-84c5-7ead6909387b_067': {'name': 'tug_cone_2', + 'session': '822926eb-1c7d-4298-84c5-7ead6909387b', + 'start': np.nan, + 'end': np.nan}, +# '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', # missing video +# 'name': 'Curl', +# 'start': np.nan, +# 'end': np.nan}, + '8d2f7856-3996-462f-bb2b-f020e7053a90_069': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', + 'name': 'TUGCone', + 'start': np.nan, + 'end': np.nan}, + '8d2f7856-3996-462f-bb2b-f020e7053a90_070': {'name': 'Brooke', # missing video + 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', + 'start': np.nan, + 'end': np.nan}, +# 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', # missing video +# 'name': 'TIPTOE', +# 'start': np.nan, +# 'end': np.nan}, + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_072': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', + 'name': 'TIPTOEV2', + 'start': np.nan, + 'end': np.nan}, + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_073': {'name': 'JUMP', + 'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', + 'start': np.nan, + 'end': np.nan}, + '31b45d11-f909-42e5-b404-3451b4b6d238_074': {'name': 'TUG',# Leaving the fov + 'session': '31b45d11-f909-42e5-b404-3451b4b6d238', + 'start': np.nan, + 'end': np.nan}, + 'b233300d-2c6d-4735-aadb-c597da014629_075': {'name': 'ELBOWROM', + 'session': 'b233300d-2c6d-4735-aadb-c597da014629', + 'start': np.nan, + 'end': np.nan}, + 'c2001341-2624-4595-91d1-9af78ed76421_076': {'name': '10mwt_1', + 'session': 'c2001341-2624-4595-91d1-9af78ed76421', + 'start': np.nan, + 'end': np.nan}, + 'f5ec71e8-7898-4c51-993b-897014a3e8e3_077': {'name': '10mwrt', + 'session': 'f5ec71e8-7898-4c51-993b-897014a3e8e3', + 'start': np.nan, + 'end': np.nan}, + 'ee86be93-b1da-4080-b445-176f6071e734_078': {'session': 'ee86be93-b1da-4080-b445-176f6071e734', + 'name': '10mwrt', + 'start': np.nan, + 'end': np.nan}, + '76b201f8-1950-414e-a48a-97bf932c61bc_079': {'name': '10mwt', # TO REPROCESS + 'session': '76b201f8-1950-414e-a48a-97bf932c61bc', + 'start': 0, + 'end': 10}, + '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_080': {'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', + 'name': '10mwt', + 'start': np.nan, + 'end': np.nan}, + '4769f868-d487-4e0d-bda6-98eb6751b40a_081': {'session': '4769f868-d487-4e0d-bda6-98eb6751b40a', + 'name': 'toe_stand', + 'start': np.nan, + 'end': np.nan}, + '4769f868-d487-4e0d-bda6-98eb6751b40a_082': {'name': 'jump', # video missing + 'session': '4769f868-d487-4e0d-bda6-98eb6751b40a', + 'start': np.nan, + 'end': np.nan}, + '41599e7a-8eea-4b03-b5ef-57502504e879_083': {'name': 'toe_stand', + 'session': '41599e7a-8eea-4b03-b5ef-57502504e879', + 'start': np.nan, + 'end': np.nan}, + 'e4d2328b-6f01-4f4e-bea3-64076357de64_084': {'name': '10mwrt', + 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64', + 'start': np.nan, + 'end': np.nan}, + 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85_085': {'name': 'jump', + 'session': 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85', + 'start': np.nan, + 'end': np.nan}, + 'ee86be93-b1da-4080-b445-176f6071e734_086': {'name': '10mwt_2', + 'session': 'ee86be93-b1da-4080-b445-176f6071e734', + 'start': np.nan, + 'end': np.nan}, +# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', # missing video +# 'name': '10mwrt', +# 'start': np.nan, +# 'end': np.nan}, + '6537ecc8-e44b-4405-a9fe-c09ede5e0550_088': {'name': '5xsts', # TO REPROCESS + 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550', + 'start': 0, + 'end': 15}, + 'cda2db6e-b268-42ee-99d0-9cc358e893d1_089': {'name': '10mwrt', + 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1', + 'start': np.nan, + 'end': np.nan}, + '621e5ae8-226b-4fc6-bbd9-df448328ff1f_090': {'name': 'jump_1',# no jump recorded + 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f', + 'start': np.nan, + 'end': np.nan}, + '6de88f3d-b84a-4ee5-8003-a5fbb994278e_091': {'name': '10mwt',# nothing obvious + 'session': '6de88f3d-b84a-4ee5-8003-a5fbb994278e', + 'start': np.nan, + 'end': np.nan}, + 'd37407d6-83a8-44f8-b5b2-c651db8edd9f_092': {'name': 'jump', + 'session': 'd37407d6-83a8-44f8-b5b2-c651db8edd9f', + 'start': np.nan, + 'end': np.nan}, + '4d0cfa49-baa9-4e49-8b34-2bc6727f6052_093': {'name': '10mwt',# nothing obvious + 'session': '4d0cfa49-baa9-4e49-8b34-2bc6727f6052', + 'start': np.nan, + 'end': np.nan}, + 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36_094': {'name': '10mwt', + 'session': 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36', + 'start': np.nan, + 'end': np.nan}, + '5a3dd4e7-7293-46e6-9c0c-b77e2511860d_095': {'name': '10mwrt',# nothing to do, crazy run + 'session': '5a3dd4e7-7293-46e6-9c0c-b77e2511860d', + 'start': np.nan, + 'end': np.nan}, + 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_096': {'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', + 'name': '10MRT', + 'start': np.nan, + 'end': np.nan}, + 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_097': {'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', + 'name': '10MWT', + 'start': np.nan, + 'end': np.nan}, + 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5_098': {'name': '10MWRT', + 'session': 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5', + 'start': np.nan, + 'end': np.nan}, + 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_099': {'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', + 'name': 'TugLineRun', + 'start': np.nan, + 'end': np.nan}, + '07d80cd7-3634-4485-b3a7-a9d592cf82b0_100': {'name': 'Brooke', # nothing obvious, quality seems bad (clinic) + 'session': '07d80cd7-3634-4485-b3a7-a9d592cf82b0', + 'start': np.nan, + 'end': np.nan}, + 'faa79e6d-f90e-4399-8b68-9e9f2dd00027_101': {'name': 'HOP', + 'session': 'faa79e6d-f90e-4399-8b68-9e9f2dd00027', + 'start': np.nan, + 'end': np.nan}, + '34f2095f-d076-4a3d-b094-75f968a93c21_102': {'name': 'jump',# nothing obvious + 'session': '34f2095f-d076-4a3d-b094-75f968a93c21', + 'start': np.nan, + 'end': np.nan}, + 'ca44b787-96c1-4ed3-8151-89b4bd4310c4_103': {'name': 'toe_stand', + 'session': 'ca44b787-96c1-4ed3-8151-89b4bd4310c4', + 'start': np.nan, + 'end': np.nan}, + '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f_104': {'name': 'tug_cone',# nothing obvious, maybe Tina in the fov + 'session': '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f', + 'start': np.nan, + 'end': np.nan}, + 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d_105': {'name': 'tug_cone', + 'session': 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d', + 'start': np.nan, + 'end': np.nan}, + '78d9fbfe-04e0-4766-ba15-198e246d5e9c_106': {'name': '10mwt',# people in the background, should have been handled, nothing else obvious + 'session': '78d9fbfe-04e0-4766-ba15-198e246d5e9c', + 'start': np.nan, + 'end': np.nan}, + '773c33cd-a12d-46d2-af17-35fa7b4e83bd_107': {'name': 'tug_cone',# people in the background, should have been handled, nothing else obvious + 'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd', + 'start': np.nan, + 'end': np.nan}, + '715504d6-c823-4632-8c79-b7639bfdcf4a_108': {'name': 'tug_cone', + 'session': '715504d6-c823-4632-8c79-b7639bfdcf4a', + 'start': np.nan, + 'end': np.nan}, + 'bb12568e-2303-4f87-95e4-baec67f2c023_109': {'name': 'tug_cone', + 'session': 'bb12568e-2303-4f87-95e4-baec67f2c023', + 'start': np.nan, + 'end': np.nan}, + 'a7675b05-88da-4bb0-b27b-5357c3ec5807_110': {'name': 'tug_cone', + 'session': 'a7675b05-88da-4bb0-b27b-5357c3ec5807', + 'start': np.nan, + 'end': np.nan}, + '7d9b3d14-2672-458a-94df-d35c7b5cdcf5_111': {'name': '5xsts',# nothing obvious, quality seems bad (clinic) + 'session': '7d9b3d14-2672-458a-94df-d35c7b5cdcf5', + 'start': np.nan, + 'end': np.nan}, + '9108903d-26b3-479a-ad49-955aebb868c7_112': {'name': 'TUGfast', + 'session': '9108903d-26b3-479a-ad49-955aebb868c7', + 'start': np.nan, + 'end': np.nan}, + '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69_113': {'name': 'jump',# TO REPROCESS + 'session': '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69', + 'start': 2, + 'end': np.nan}, + '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_114': {'name': 'tug_cone',# people in the background, should have been handled, nothing else obvious + 'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', + 'start': np.nan, + 'end': np.nan}, + 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_115': {'name': '5TSTS', + 'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', + 'start': np.nan, + 'end': np.nan}, + '65aa878e-4396-4a9c-a9a0-7a1e2c708f83_116': {'name': 'ARM_ROM',# nothing obvious, quality seems bad (clinic) + 'session': '65aa878e-4396-4a9c-a9a0-7a1e2c708f83', + 'start': np.nan, + 'end': np.nan}, + '1fc22b0c-1ef8-4b6d-b83b-85b12634905d_117': {'name': '10mwrt_1', # TO REPROCESS + 'session': '1fc22b0c-1ef8-4b6d-b83b-85b12634905d', + 'start': 3, + 'end': np.nan}, + '28ec73c6-025b-4ea4-b844-803e8205bf1a_118': {'name': 'brooke',# hands hidden + 'session': '28ec73c6-025b-4ea4-b844-803e8205bf1a', + 'start': np.nan, + 'end': np.nan}, + '51003106-cdec-40f7-9204-0e21953bb4a7_119': {'name': '10mwt', + 'session': '51003106-cdec-40f7-9204-0e21953bb4a7', + 'start': np.nan, + 'end': np.nan}, + '109eabdf-e50d-459e-8917-c856338a720b_120': {'name': '10mwrt', # TO REPROCESS, not sure that will help + 'session': '109eabdf-e50d-459e-8917-c856338a720b', + 'start': 1, + 'end': np.nan}, + 'aca92056-3f67-403c-8d6a-513055274ffe_121': {'session': 'aca92056-3f67-403c-8d6a-513055274ffe', + 'name': 'brooke', + 'start': np.nan, + 'end': np.nan}, + 'aca92056-3f67-403c-8d6a-513055274ffe_122': {'session': 'aca92056-3f67-403c-8d6a-513055274ffe', + 'name': 'tug_cone', + 'start': np.nan, + 'end': np.nan}, + 'aca92056-3f67-403c-8d6a-513055274ffe_123': {'name': '5xsts', + 'session': 'aca92056-3f67-403c-8d6a-513055274ffe', + 'start': np.nan, + 'end': np.nan}, + '25d785ae-f49e-4531-b14c-86d6d5e9d144_124': {'name': 'toe_stand',# TO REPROCESS + 'session': '25d785ae-f49e-4531-b14c-86d6d5e9d144', + 'start': 0, + 'end': 31}, + '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a_125': {'name': '10mrt', # fast run + 'session': '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a', + 'start': np.nan, + 'end': np.nan}, + 'bca0aad8-c129-4a62-bef3-b5de1659df5e_126': {'name': 'tug_cone', + 'session': 'bca0aad8-c129-4a62-bef3-b5de1659df5e', + 'start': np.nan, + 'end': np.nan}, + '98fc0617-1f5e-44ba-92c9-a32f09899295_127': {'name': 'brooke',# nothing obvious + 'session': '98fc0617-1f5e-44ba-92c9-a32f09899295', + 'start': np.nan, + 'end': np.nan}} + def get_video_info(video_file): # Define the ffprobe command to get frame rate @@ -52,257 +542,38 @@ def get_video_info(video_file): return frame_rate, frame_count -def trim_video_by_frames(video_path, start_frame, frame_duration, trimmed_video_path): +def trim_video_by_frames(video_path, start_frame, frame_duration, frame_rate, trimmed_video_path): # Build the ffmpeg command to trim without re-encoding ffmpeg_cmd = f'ffmpeg -i {video_path} -ss {start_frame / frame_rate} -frames:v {frame_duration} -c:v copy -c:a copy {trimmed_video_path}' os.system(ffmpeg_cmd) -for count, session_id in enumerate(bad_data_trim_needed): - trial_name = bad_data_trim_needed[session_id]['name'] +for count, session_id_all in enumerate(all_bad_data): + session_id = session_id_all.split('_')[0] + trial_name = all_bad_data[session_id_all]['name'] trial_id = get_trial_id(session_id, trial_name) trial_json = get_trial_json(trial_id) for k, video in enumerate(trial_json["videos"]): # Download the video - videoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "InputMedia") + videoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "InputMedia") os.makedirs(videoDir, exist_ok=True) video_path = os.path.join(videoDir, trial_id + ".mov") download_file(video["video"], video_path) - # Trim the video - frame_rate, frame_count = get_video_info(video_path) - video_duration = frame_count / frame_rate - n_frame_trim_start = int(np.floor(bad_data_trim_needed[session_id]['start'] * frame_rate)) - desired_num_frames = int(np.floor((bad_data_trim_needed[session_id]['end'] - bad_data_trim_needed[session_id]['start']) * frame_rate)) - trimmedVideoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "TrimmedInputMedia") - os.makedirs(trimmedVideoDir, exist_ok=True) - trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") - trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, trimmed_video_path) + # # Trim the video + # frame_rate, frame_count = get_video_info(video_path) + # video_duration = frame_count / frame_rate + # n_frame_trim_start = int(np.floor(bad_data_trim_needed[session_id]['start'] * frame_rate)) + # desired_num_frames = int(np.floor((bad_data_trim_needed[session_id]['end'] - bad_data_trim_needed[session_id]['start']) * frame_rate)) + # trimmedVideoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "TrimmedInputMedia") + # os.makedirs(trimmedVideoDir, exist_ok=True) + # trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") + # trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, frame_rate, trimmed_video_path) - # Post the trimmed video - post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) + # # Post the trimmed video + # post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) - # Delete the old video - delete_video_from_trial(video['id']) - - -# all_bad_data = \ -# {'002ea0b9-a2b6-4983-a876-275e3087ef1e': {'name': 'brooke', -# 'session': '002ea0b9-a2b6-4983-a876-275e3087ef1e'}, -# '057d10da-34c7-4fb7-a127-6040010dde06': {'name': 'brooke_sit', -# 'session': '057d10da-34c7-4fb7-a127-6040010dde06'}, -# '07d80cd7-3634-4485-b3a7-a9d592cf82b0': {'name': 'Brooke', -# 'session': '07d80cd7-3634-4485-b3a7-a9d592cf82b0'}, -# '109eabdf-e50d-459e-8917-c856338a720b': {'name': '10mwrt', -# 'session': '109eabdf-e50d-459e-8917-c856338a720b'}, -# '18f57fa8-41a0-4d8d-b7a3-d0c838516f24': {'name': 'brooke', -# 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24'}, -# '19788965-c4a4-481e-a687-f2055b6d85cb': {'name': 'stairs_descend', -# 'session': '19788965-c4a4-481e-a687-f2055b6d85cb'}, -# '1fc22b0c-1ef8-4b6d-b83b-85b12634905d': {'name': '10mwrt_1', -# 'session': '1fc22b0c-1ef8-4b6d-b83b-85b12634905d'}, -# '22fab7ce-b219-4c5d-84a4-e780816d46ea': {'name': 'tug_line_1', -# 'session': '22fab7ce-b219-4c5d-84a4-e780816d46ea'}, -# '25d785ae-f49e-4531-b14c-86d6d5e9d144': {'name': 'toe_stand', -# 'session': '25d785ae-f49e-4531-b14c-86d6d5e9d144'}, -# '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69': {'name': 'jump', -# 'session': '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69'}, -# '28ec73c6-025b-4ea4-b844-803e8205bf1a': {'name': 'brooke', -# 'session': '28ec73c6-025b-4ea4-b844-803e8205bf1a'}, -# '2aff7769-ee45-4e3d-a8cc-266d5b886a10': {'name': 'toe_stand', -# 'session': '2aff7769-ee45-4e3d-a8cc-266d5b886a10'}, -# '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f': {'name': 'tug_cone', -# 'session': '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f'}, -# '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b': {'name': '5xsts', -# 'session': '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b'}, -# '31b45d11-f909-42e5-b404-3451b4b6d238': {'name': 'TUG', -# 'session': '31b45d11-f909-42e5-b404-3451b4b6d238'}, -# '34f2095f-d076-4a3d-b094-75f968a93c21': {'name': 'jump', -# 'session': '34f2095f-d076-4a3d-b094-75f968a93c21'}, -# '38a56b81-3e2c-4854-93a4-333b66c8e0f1': {'name': 'toe_stand', -# 'session': '38a56b81-3e2c-4854-93a4-333b66c8e0f1'}, -# '3a681925-50b5-470e-a44a-c1cab743f58b': {'name': '10mwt', -# 'session': '3a681925-50b5-470e-a44a-c1cab743f58b'}, -# '41599e7a-8eea-4b03-b5ef-57502504e879': {'name': 'toe_stand', -# 'session': '41599e7a-8eea-4b03-b5ef-57502504e879'}, -# '43db734e-13fb-4d6d-9223-09f967dd40f0': {'name': 'toe_stand', -# 'session': '43db734e-13fb-4d6d-9223-09f967dd40f0'}, -# '4769f868-d487-4e0d-bda6-98eb6751b40a': {'name': 'jump', -# 'session': '4769f868-d487-4e0d-bda6-98eb6751b40a'}, -# '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff': {'name': 'brooke', -# 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff'}, -# '4d0cfa49-baa9-4e49-8b34-2bc6727f6052': {'name': '10mwt', -# 'session': '4d0cfa49-baa9-4e49-8b34-2bc6727f6052'}, -# '51003106-cdec-40f7-9204-0e21953bb4a7': {'name': '10mwt', -# 'session': '51003106-cdec-40f7-9204-0e21953bb4a7'}, -# '55566ced-e1be-4789-b265-b0168087a402': {'name': '10mwrt_1', -# 'session': '55566ced-e1be-4789-b265-b0168087a402'}, -# '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e': {'name': 'tug_line_1', -# 'session': '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e'}, -# '5a3dd4e7-7293-46e6-9c0c-b77e2511860d': {'name': '10mwrt', -# 'session': '5a3dd4e7-7293-46e6-9c0c-b77e2511860d'}, -# '621e5ae8-226b-4fc6-bbd9-df448328ff1f': {'name': 'jump_1', -# 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f'}, -# '623a4fe2-bc1e-4248-920a-e35416d1350d': {'name': '10mwrt', -# 'session': '623a4fe2-bc1e-4248-920a-e35416d1350d'}, -# '6537ecc8-e44b-4405-a9fe-c09ede5e0550': {'name': '5xsts', -# 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550'}, -# '65aa878e-4396-4a9c-a9a0-7a1e2c708f83': {'name': 'ARM_ROM', -# 'session': '65aa878e-4396-4a9c-a9a0-7a1e2c708f83'}, -# '68cf5eec-1d9b-4630-8585-c9094d2de82c': {'name': 'TUGCone', -# 'session': '68cf5eec-1d9b-4630-8585-c9094d2de82c'}, -# '6de88f3d-b84a-4ee5-8003-a5fbb994278e': {'name': '10mwt', -# 'session': '6de88f3d-b84a-4ee5-8003-a5fbb994278e'}, -# '715504d6-c823-4632-8c79-b7639bfdcf4a': {'name': 'tug_cone', -# 'session': '715504d6-c823-4632-8c79-b7639bfdcf4a'}, -# '725e0d28-d043-44bd-9f3e-0e58338a6bc4': {'name': '10mwrt', -# 'session': '725e0d28-d043-44bd-9f3e-0e58338a6bc4'}, -# '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86': {'name': 'TUGfast', -# 'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86'}, -# '76b201f8-1950-414e-a48a-97bf932c61bc': {'name': '10mwt', -# 'session': '76b201f8-1950-414e-a48a-97bf932c61bc'}, -# '773c33cd-a12d-46d2-af17-35fa7b4e83bd': {'name': 'tug_cone', -# 'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd'}, -# '78d9fbfe-04e0-4766-ba15-198e246d5e9c': {'name': '10mwt', -# 'session': '78d9fbfe-04e0-4766-ba15-198e246d5e9c'}, -# '7d9b3d14-2672-458a-94df-d35c7b5cdcf5': {'name': '5xsts', -# 'session': '7d9b3d14-2672-458a-94df-d35c7b5cdcf5'}, -# '822926eb-1c7d-4298-84c5-7ead6909387b': {'name': 'tug_cone_2', -# 'session': '822926eb-1c7d-4298-84c5-7ead6909387b'}, -# '8963b080-d316-4183-8928-47bebcac70b1': {'name': '10mwt', -# 'session': '8963b080-d316-4183-8928-47bebcac70b1'}, -# '8b7a734d-2874-42f7-94a2-c6026ec35d99': {'name': '10mwrt', -# 'session': '8b7a734d-2874-42f7-94a2-c6026ec35d99'}, -# '8bf259f7-000f-4474-9ad4-255949bdaf71': {'name': 'brooke', -# 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71'}, -# '8d2f7856-3996-462f-bb2b-f020e7053a90': {'name': 'Brooke', -# 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90'}, -# '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae': {'name': 'tug_cone', -# 'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae'}, -# '9108903d-26b3-479a-ad49-955aebb868c7': {'name': 'TUGfast', -# 'session': '9108903d-26b3-479a-ad49-955aebb868c7'}, -# '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36': {'name': '10mwt', -# 'session': '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36'}, -# '9871c398-0d02-450b-86a6-0d8c6b27b26d': {'name': '5xsts', -# 'session': '9871c398-0d02-450b-86a6-0d8c6b27b26d'}, -# '98fc0617-1f5e-44ba-92c9-a32f09899295': {'name': 'brooke', -# 'session': '98fc0617-1f5e-44ba-92c9-a32f09899295'}, -# '9c4666be-57f4-4a6b-9c51-7e394f4a53e1': {'name': 'tug_line', -# 'session': '9c4666be-57f4-4a6b-9c51-7e394f4a53e1'}, -# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1': {'name': '10mwrt', -# 'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1'}, -# '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a': {'name': '10mrt', -# 'session': '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a'}, -# 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d': {'name': 'tug_cone', -# 'session': 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d'}, -# 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a': {'name': '10mwt', -# 'session': 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a'}, -# 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab': {'name': 'brooke', -# 'session': 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab'}, -# 'a7675b05-88da-4bb0-b27b-5357c3ec5807': {'name': 'tug_cone', -# 'session': 'a7675b05-88da-4bb0-b27b-5357c3ec5807'}, -# 'aca92056-3f67-403c-8d6a-513055274ffe': {'name': '5xsts', -# 'session': 'aca92056-3f67-403c-8d6a-513055274ffe'}, -# 'ace248c9-61a6-4c41-93eb-83edd823de0c': {'name': 'toe_stand', -# 'session': 'ace248c9-61a6-4c41-93eb-83edd823de0c'}, -# 'b233300d-2c6d-4735-aadb-c597da014629': {'name': 'ELBOWROM', -# 'session': 'b233300d-2c6d-4735-aadb-c597da014629'}, -# 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce': {'name': '10mwrt', -# 'session': 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce'}, -# 'bb12568e-2303-4f87-95e4-baec67f2c023': {'name': 'tug_cone', -# 'session': 'bb12568e-2303-4f87-95e4-baec67f2c023'}, -# 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673': {'name': '5TSTS', -# 'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673'}, -# 'bca0aad8-c129-4a62-bef3-b5de1659df5e': {'name': 'tug_cone', -# 'session': 'bca0aad8-c129-4a62-bef3-b5de1659df5e'}, -# 'c2001341-2624-4595-91d1-9af78ed76421': {'name': '10mwt_1', -# 'session': 'c2001341-2624-4595-91d1-9af78ed76421'}, -# 'ca174c27-d0fe-4edd-8799-9ef3ea053086': {'name': 'JUMP', -# 'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086'}, -# 'ca44b787-96c1-4ed3-8151-89b4bd4310c4': {'name': 'toe_stand', -# 'session': 'ca44b787-96c1-4ed3-8151-89b4bd4310c4'}, -# 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375': {'name': '5TSTS', -# 'session': 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375'}, -# 'cda2db6e-b268-42ee-99d0-9cc358e893d1': {'name': '10mwrt', -# 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1'}, -# 'cdb103d7-e1a7-4f67-bf74-e335f79b471c': {'name': '10MWT_2', -# 'session': 'cdb103d7-e1a7-4f67-bf74-e335f79b471c'}, -# 'ce0fdd88-53b6-4974-92fb-a720b93d1623': {'name': '5xsts', -# 'session': 'ce0fdd88-53b6-4974-92fb-a720b93d1623'}, -# 'd10ea979-2a29-4bd7-a3ac-d475b5878134': {'name': 'toe_stand', -# 'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134'}, -# 'd37407d6-83a8-44f8-b5b2-c651db8edd9f': {'name': 'jump', -# 'session': 'd37407d6-83a8-44f8-b5b2-c651db8edd9f'}, -# 'd9538893-e95c-4e28-960e-dd4aa0760942': {'name': 'tug_line', -# 'session': 'd9538893-e95c-4e28-960e-dd4aa0760942'}, -# 'dac69d8a-0790-48ea-9296-66b5903d9ba8': {'name': '10mwrt_2', -# 'session': 'dac69d8a-0790-48ea-9296-66b5903d9ba8'}, -# 'dc497821-4eac-49e0-87ac-c088d1245edb': {'name': '10mwt_1', -# 'session': 'dc497821-4eac-49e0-87ac-c088d1245edb'}, -# 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e': {'name': 'curls', -# 'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e'}, -# 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5': {'name': '10MWRT', -# 'session': 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5'}, -# 'df982665-8e59-4691-88f8-611ccbfe7f4a': {'name': 'brooke', -# 'session': 'df982665-8e59-4691-88f8-611ccbfe7f4a'}, -# 'e4d2328b-6f01-4f4e-bea3-64076357de64': {'name': '10mwrt', -# 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64'}, -# 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36': {'name': '10mwt', -# 'session': 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36'}, -# 'ead8a2fc-c926-464f-9965-d155a62eead8': {'name': 'curls', -# 'session': 'ead8a2fc-c926-464f-9965-d155a62eead8'}, -# 'ee86be93-b1da-4080-b445-176f6071e734': {'name': '10mwt_2', -# 'session': 'ee86be93-b1da-4080-b445-176f6071e734'}, -# 'f249a8d6-9965-4240-94c3-e42a6b4bccf6': {'name': 'brooke', -# 'session': 'f249a8d6-9965-4240-94c3-e42a6b4bccf6'}, -# 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85': {'name': 'jump', -# 'session': 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85'}, -# 'f5ec71e8-7898-4c51-993b-897014a3e8e3': {'name': '10mwrt', -# 'session': 'f5ec71e8-7898-4c51-993b-897014a3e8e3'}, -# 'fa856382-bf8d-411a-b086-a2d74fab9d1b': {'name': '10mrt', -# 'session': 'fa856382-bf8d-411a-b086-a2d74fab9d1b'}, -# 'faa79e6d-f90e-4399-8b68-9e9f2dd00027': {'name': 'HOP', -# 'session': 'faa79e6d-f90e-4399-8b68-9e9f2dd00027'}} - - - -# bad_data_server_failed = \ -# {'31b45d11-f909-42e5-b404-3451b4b6d238': {'name': 'TUG', -# 'session': '31b45d11-f909-42e5-b404-3451b4b6d238'}, -# '41599e7a-8eea-4b03-b5ef-57502504e879': {'name': 'toe_stand', -# 'session': '41599e7a-8eea-4b03-b5ef-57502504e879'}, -# '4769f868-d487-4e0d-bda6-98eb6751b40a': {'name': 'jump', -# 'session': '4769f868-d487-4e0d-bda6-98eb6751b40a'}, -# '621e5ae8-226b-4fc6-bbd9-df448328ff1f': {'name': 'jump_1', -# 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f'}, -# '6537ecc8-e44b-4405-a9fe-c09ede5e0550': {'name': '5xsts', -# 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550'}, -# '76b201f8-1950-414e-a48a-97bf932c61bc': {'name': '10mwt', -# 'session': '76b201f8-1950-414e-a48a-97bf932c61bc'}, -# '8d2f7856-3996-462f-bb2b-f020e7053a90': {'name': 'Brooke', -# 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90'}, -# '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae': {'name': '10mwt', -# 'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae'}, -# '9108903d-26b3-479a-ad49-955aebb868c7': {'name': 'Curl', -# 'session': '9108903d-26b3-479a-ad49-955aebb868c7'}, -# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1': {'name': '10mwrt', -# 'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1'}, -# 'b233300d-2c6d-4735-aadb-c597da014629': {'name': 'ELBOWROM', -# 'session': 'b233300d-2c6d-4735-aadb-c597da014629'}, -# 'c2001341-2624-4595-91d1-9af78ed76421': {'name': '10mwt_1', -# 'session': 'c2001341-2624-4595-91d1-9af78ed76421'}, -# 'ca174c27-d0fe-4edd-8799-9ef3ea053086': {'name': 'JUMP', -# 'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086'}, -# 'cda2db6e-b268-42ee-99d0-9cc358e893d1': {'name': '10mwrt', -# 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1'}, -# 'e4d2328b-6f01-4f4e-bea3-64076357de64': {'name': '10mwrt', -# 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64'}, -# 'ee86be93-b1da-4080-b445-176f6071e734': {'name': '10mwt_2', -# 'session': 'ee86be93-b1da-4080-b445-176f6071e734'}, -# 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85': {'name': 'jump', -# 'session': 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85'}, -# 'f5ec71e8-7898-4c51-993b-897014a3e8e3': {'name': '10mwrt', -# 'session': 'f5ec71e8-7898-4c51-993b-897014a3e8e3'}} - + # # Delete the old video + # delete_video_from_trial(video['id']) \ No newline at end of file From e98b0d5dfd7c99d4d1a8b75790dd12b3777228aa Mon Sep 17 00:00:00 2001 From: Antoine Falisse Date: Mon, 25 Mar 2024 13:41:08 -0700 Subject: [PATCH 3/5] updated file --- Examples/example_trim_videos.py | 403 ++++++++++++++++---------------- 1 file changed, 201 insertions(+), 202 deletions(-) diff --git a/Examples/example_trim_videos.py b/Examples/example_trim_videos.py index 65084d0a..bd4cd001 100644 --- a/Examples/example_trim_videos.py +++ b/Examples/example_trim_videos.py @@ -10,47 +10,46 @@ os.makedirs(data_folder, exist_ok=True) all_bad_data = \ -{ - 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_000': {'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', +{'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_000': {'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', 'name': 'arm_rom', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_001': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', 'name': '10mrt', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # cut off FOV in first few seconds of one side '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_002': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', 'name': '10mwt', - 'start': np.nan, - 'end': np.nan}, + 'start': 7, + 'end': np.nan}, # TO REPROCESS '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_003': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', 'name': '5xSTS', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # both videos cut off right before 6th rep is finished '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_004': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', 'name': 'Curl', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_005': {'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', 'name': 'SHLD_ROM', 'start': np.nan, - 'end': np.nan}, - '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_006': {'name': 'TUGfast',# coming very close to the end + 'end': np.nan}, # person in the background of one frame + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_006': {'name': 'TUGfast', 'session': '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # coming very close to the end 'dac69d8a-0790-48ea-9296-66b5903d9ba8_007': {'session': 'dac69d8a-0790-48ea-9296-66b5903d9ba8', 'name': '10mwt', - 'start': np.nan, - 'end': np.nan}, + 'start': 0, + 'end': 15}, # TO REPROCESS 'd9538893-e95c-4e28-960e-dd4aa0760942_008': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', 'name': 'brooke', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'd9538893-e95c-4e28-960e-dd4aa0760942_009': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', 'name': 'tug_cone', - 'start': np.nan, - 'end': np.nan}, + 'start': 3, + 'end': np.nan}, # TO REPROCESS 'd9538893-e95c-4e28-960e-dd4aa0760942_010': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', 'name': '10mwt', 'start': np.nan, @@ -58,471 +57,472 @@ 'd9538893-e95c-4e28-960e-dd4aa0760942_011': {'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', 'name': '10mwrt', 'start': np.nan, - 'end': np.nan}, + 'end': 7}, # TO REPROCESS 'd9538893-e95c-4e28-960e-dd4aa0760942_012': {'name': 'tug_line', 'session': 'd9538893-e95c-4e28-960e-dd4aa0760942', 'start': np.nan, - 'end': np.nan}, - '8963b080-d316-4183-8928-47bebcac70b1_013': {'name': '10mwt',# TO REPROCESS, not sure it will help + 'end': np.nan}, # nothing obvious + '8963b080-d316-4183-8928-47bebcac70b1_013': {'name': '10mwt', 'session': '8963b080-d316-4183-8928-47bebcac70b1', 'start': 0, - 'end': 9}, + 'end': 9}, # TO REPROCESS, not sure it will help 'b233300d-2c6d-4735-aadb-c597da014629_014': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', 'name': '10MRT', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'fa856382-bf8d-411a-b086-a2d74fab9d1b_015': {'name': '10mrt', 'session': 'fa856382-bf8d-411a-b086-a2d74fab9d1b', 'start': np.nan, - 'end': np.nan}, + 'end': 6}, # TO REPROCESS, person in background '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_016': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', 'name': '10mwrt_1', 'start': np.nan, - 'end': np.nan}, - '9c4666be-57f4-4a6b-9c51-7e394f4a53e1_017': {'name': 'tug_line', # person in the fov + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS, one side is 1 second truncated + '9c4666be-57f4-4a6b-9c51-7e394f4a53e1_017': {'name': 'tug_line', 'session': '9c4666be-57f4-4a6b-9c51-7e394f4a53e1', 'start': 2, - 'end': 10}, + 'end': 10}, # TO REPROCESS 'f249a8d6-9965-4240-94c3-e42a6b4bccf6_018': {'name': 'brooke', 'session': 'f249a8d6-9965-4240-94c3-e42a6b4bccf6', 'start': np.nan, - 'end': np.nan}, - '43db734e-13fb-4d6d-9223-09f967dd40f0_019': {'name': 'toe_stand', # nothing obvious + 'end': np.nan}, # person in background + '43db734e-13fb-4d6d-9223-09f967dd40f0_019': {'name': 'toe_stand', 'session': '43db734e-13fb-4d6d-9223-09f967dd40f0', 'start': np.nan, - 'end': np.nan}, - '8b7a734d-2874-42f7-94a2-c6026ec35d99_020': {'name': '10mwrt',# fast run + 'end': np.nan}, # nothing obvious + '8b7a734d-2874-42f7-94a2-c6026ec35d99_020': {'name': '10mwrt', 'session': '8b7a734d-2874-42f7-94a2-c6026ec35d99', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # fast run 'ead8a2fc-c926-464f-9965-d155a62eead8_021': {'name': 'curls', 'session': 'ead8a2fc-c926-464f-9965-d155a62eead8', - 'start': np.nan, - 'end': np.nan}, + 'start': 14, + 'end': np.nan}, # TO REPROCESS [VIDEOS DIFFERENT LENGTHS] 'dc497821-4eac-49e0-87ac-c088d1245edb_022': {'name': '10mwt_1', 'session': 'dc497821-4eac-49e0-87ac-c088d1245edb', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d_023': {'session': 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d', 'name': '10mwrt_2', 'start': np.nan, - 'end': np.nan}, - '38a56b81-3e2c-4854-93a4-333b66c8e0f1_024': {'name': 'toe_stand',# nothing obvious + 'end': np.nan}, # nothing obvious, some glare from overhead lights + '38a56b81-3e2c-4854-93a4-333b66c8e0f1_024': {'name': 'toe_stand', 'session': '38a56b81-3e2c-4854-93a4-333b66c8e0f1', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '9108903d-26b3-479a-ad49-955aebb868c7_025': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', 'name': '5TSTS', - 'start': np.nan, - 'end': np.nan}, - '002ea0b9-a2b6-4983-a876-275e3087ef1e_026': {'name': 'brooke', # nothing obvious + 'start': 10, + 'end': 27}, # TO REPROCESS + '002ea0b9-a2b6-4983-a876-275e3087ef1e_026': {'name': 'brooke', 'session': '002ea0b9-a2b6-4983-a876-275e3087ef1e', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'b233300d-2c6d-4735-aadb-c597da014629_027': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', 'name': 'TUG', 'start': np.nan, - 'end': np.nan}, - '68cf5eec-1d9b-4630-8585-c9094d2de82c_028': {'name': 'TUGCone',# leaving the fov + 'end': np.nan}, # exiting FOV + '68cf5eec-1d9b-4630-8585-c9094d2de82c_028': {'name': 'TUGCone', 'session': '68cf5eec-1d9b-4630-8585-c9094d2de82c', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # leaving the fov 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36_029': {'session': 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36', 'name': '10mwrt', 'start': np.nan, - 'end': np.nan}, - '3a681925-50b5-470e-a44a-c1cab743f58b_030': {'name': '10mwt',# nothing obvious, quality seems bad (clinic) + 'end': 6}, # TO REPROCESS + '3a681925-50b5-470e-a44a-c1cab743f58b_030': {'name': '10mwt', 'session': '3a681925-50b5-470e-a44a-c1cab743f58b', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, quality seems bad (clinic) '773c33cd-a12d-46d2-af17-35fa7b4e83bd_031': {'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd', 'name': '10mrt', 'start': np.nan, - 'end': np.nan}, - '725e0d28-d043-44bd-9f3e-0e58338a6bc4_032': {'name': '10mwrt', # TO REPROCESS + 'end': np.nan}, # person in the background + '725e0d28-d043-44bd-9f3e-0e58338a6bc4_032': {'name': '10mwrt', 'session': '725e0d28-d043-44bd-9f3e-0e58338a6bc4', 'start': 0, - 'end': 10}, + 'end': 10}, # TO REPROCESS 'ace248c9-61a6-4c41-93eb-83edd823de0c_033': {'name': 'toe_stand', 'session': 'ace248c9-61a6-4c41-93eb-83edd823de0c', 'start': np.nan, - 'end': np.nan}, + 'end': 38}, # TO REPROCESS 'cdb103d7-e1a7-4f67-bf74-e335f79b471c_034': {'name': '10MWT_2', 'session': 'cdb103d7-e1a7-4f67-bf74-e335f79b471c', 'start': np.nan, - 'end': np.nan}, + 'end': 13}, # TO REPROCESS 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375_035': {'name': '5TSTS', 'session': 'cbb0e8bc-8ed0-4af5-a20d-0a54650a3375', 'start': np.nan, - 'end': np.nan}, - '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e_036': {'name': 'tug_line_1',# nothing obvious, quality seems bad (clinic) + 'end': np.nan}, # person in background + '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e_036': {'name': 'tug_line_1', 'session': '59f3fc4e-674f-43cc-9fdc-e9a2cf0a109e', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, quality seems bad (clinic) 'ce0fdd88-53b6-4974-92fb-a720b93d1623_037': {'name': '5xsts', 'session': 'ce0fdd88-53b6-4974-92fb-a720b93d1623', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a_038': {'name': '10mwt', 'session': 'a0d8b67a-89b0-45a7-a634-348ef2bcca5a', 'start': np.nan, - 'end': np.nan}, - '623a4fe2-bc1e-4248-920a-e35416d1350d_039': {'name': '10mwrt',# fast run + 'end': np.nan}, # nothing obvious + '623a4fe2-bc1e-4248-920a-e35416d1350d_039': {'name': '10mwrt', 'session': '623a4fe2-bc1e-4248-920a-e35416d1350d', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # fast run 'd10ea979-2a29-4bd7-a3ac-d475b5878134_040': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', 'name': 'jump', - 'start': np.nan, - 'end': np.nan}, + 'start': 1, + 'end': np.nan}, # TODO REPROCESS 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_041': {'name': 'curls', 'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36_042': {'name': '10mwt', 'session': '9808e3d7-b2a1-4864-a3c7-7e6549a5dd36', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce_043': {'name': '10mwrt', 'session': 'ba7d94c8-dccb-486d-90d5-b3dcc237bfce', - 'start': np.nan, - 'end': np.nan}, + 'start': 3, + 'end': 10}, # TO REPROCESS '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_044': {'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', 'name': 'brooke', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # video appears to start mid-task 'dac69d8a-0790-48ea-9296-66b5903d9ba8_045': {'name': '10mwrt_2', 'session': 'dac69d8a-0790-48ea-9296-66b5903d9ba8', 'start': np.nan, - 'end': np.nan}, + 'end': 13}, # TO REPROCESS 'b233300d-2c6d-4735-aadb-c597da014629_046': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', 'name': 'SHLDRAROM', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # arms exit FOV 'd10ea979-2a29-4bd7-a3ac-d475b5878134_047': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', 'name': 'arm_rom', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # hands almost exit fov 'd10ea979-2a29-4bd7-a3ac-d475b5878134_048': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', 'name': 'curls', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'd10ea979-2a29-4bd7-a3ac-d475b5878134_049': {'name': 'toe_stand', 'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '19788965-c4a4-481e-a687-f2055b6d85cb_050': {'session': '19788965-c4a4-481e-a687-f2055b6d85cb', 'name': 'stairs_ascend', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # participant turns around after the task ends 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5_051': {'session': 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5', 'name': 'TUG_LINE', 'start': np.nan, - 'end': np.nan}, - '22fab7ce-b219-4c5d-84a4-e780816d46ea_052': {'name': 'tug_line_1', # exiting the fov + 'end': np.nan}, # exits FOV and does not return to chair + '22fab7ce-b219-4c5d-84a4-e780816d46ea_052': {'name': 'tug_line_1', 'session': '22fab7ce-b219-4c5d-84a4-e780816d46ea', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # exiting the fov '8d2f7856-3996-462f-bb2b-f020e7053a90_053': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'name': '10MWT', 'start': np.nan, - 'end': np.nan}, - '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b_054': {'name': '5xsts',# nothing obvious, quality seems bad (clinic) + 'end': np.nan}, # nothing obvious, a bit blurry in the beginning of one frame + '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b_054': {'name': '5xsts', 'session': '316ac7bf-12a8-4b1b-84db-56a9a7f9d70b', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, quality seems bad (clinic) '8d2f7856-3996-462f-bb2b-f020e7053a90_055': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'name': '10MRT', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, a decent amount of glare from the overhead lights '19788965-c4a4-481e-a687-f2055b6d85cb_056': {'name': 'stairs_descend', 'session': '19788965-c4a4-481e-a687-f2055b6d85cb', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # ignore 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab_057': {'name': 'brooke', 'session': 'a4679c46-2f38-4cc5-86b4-bdd3f01791ab', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # cuts off the beginning of the task, he appears to do the task twice 'df982665-8e59-4691-88f8-611ccbfe7f4a_058': {'name': 'brooke', 'session': 'df982665-8e59-4691-88f8-611ccbfe7f4a', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '9871c398-0d02-450b-86a6-0d8c6b27b26d_059': {'name': '5xsts', 'session': '9871c398-0d02-450b-86a6-0d8c6b27b26d', 'start': np.nan, - 'end': np.nan}, - '2aff7769-ee45-4e3d-a8cc-266d5b886a10_060': {'name': 'toe_stand',# nothing obvious except wearing a dress. + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS + '2aff7769-ee45-4e3d-a8cc-266d5b886a10_060': {'name': 'toe_stand', 'session': '2aff7769-ee45-4e3d-a8cc-266d5b886a10', 'start': np.nan, - 'end': np.nan}, - '057d10da-34c7-4fb7-a127-6040010dde06_061': {'name': 'brooke_sit', # nothing obvious + 'end': np.nan}, # nothing obvious except wearing a dress + '057d10da-34c7-4fb7-a127-6040010dde06_061': {'name': 'brooke_sit', 'session': '057d10da-34c7-4fb7-a127-6040010dde06', 'start': np.nan, - 'end': np.nan}, - '8bf259f7-000f-4474-9ad4-255949bdaf71_062': {'name': 'brooke',# nothing obvious + 'end': np.nan}, # nothing obvious + '8bf259f7-000f-4474-9ad4-255949bdaf71_062': {'name': 'brooke', 'session': '8bf259f7-000f-4474-9ad4-255949bdaf71', 'start': np.nan, - 'end': np.nan}, - '18f57fa8-41a0-4d8d-b7a3-d0c838516f24_063': {'name': 'brooke', # hands hidden + 'end': np.nan}, # nothing obvious + '18f57fa8-41a0-4d8d-b7a3-d0c838516f24_063': {'name': 'brooke', 'session': '18f57fa8-41a0-4d8d-b7a3-d0c838516f24', 'start': np.nan, - 'end': np.nan}, - '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff_064': {'name': 'brooke',# nothing obvious + 'end': np.nan}, # hands hidden + '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff_064': {'name': 'brooke', 'session': '4c46fbb5-4ab8-49ff-b90d-5e8a38c5bcff', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '55566ced-e1be-4789-b265-b0168087a402_065': {'name': '10mwrt_1', 'session': '55566ced-e1be-4789-b265-b0168087a402', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious '822926eb-1c7d-4298-84c5-7ead6909387b_066': {'session': '822926eb-1c7d-4298-84c5-7ead6909387b', 'name': 'tug_cone_1', - 'start': np.nan, - 'end': np.nan}, + 'start': 4, + 'end': np.nan}, # TO REPROCESS, people in the background '822926eb-1c7d-4298-84c5-7ead6909387b_067': {'name': 'tug_cone_2', 'session': '822926eb-1c7d-4298-84c5-7ead6909387b', + 'start': 9, + 'end': np.nan}, # TO REPROCESS, people in the background + '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', + 'name': 'Curl', 'start': np.nan, - 'end': np.nan}, -# '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', # missing video -# 'name': 'Curl', -# 'start': np.nan, -# 'end': np.nan}, + 'end': np.nan}, # folder not on drive '8d2f7856-3996-462f-bb2b-f020e7053a90_069': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'name': 'TUGCone', 'start': np.nan, - 'end': np.nan}, - '8d2f7856-3996-462f-bb2b-f020e7053a90_070': {'name': 'Brooke', # missing video + 'end': np.nan}, # exiting the fov in one video + '8d2f7856-3996-462f-bb2b-f020e7053a90_070': {'name': 'Brooke', 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'start': np.nan, - 'end': np.nan}, -# 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', # missing video -# 'name': 'TIPTOE', -# 'start': np.nan, -# 'end': np.nan}, + 'end': np.nan}, # missing video + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', + 'name': 'TIPTOE', + 'start': np.nan, + 'end': np.nan}, # [videos missing?] 'ca174c27-d0fe-4edd-8799-9ef3ea053086_072': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', 'name': 'TIPTOEV2', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # only one video; exiting fov 'ca174c27-d0fe-4edd-8799-9ef3ea053086_073': {'name': 'JUMP', 'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', 'start': np.nan, - 'end': np.nan}, - '31b45d11-f909-42e5-b404-3451b4b6d238_074': {'name': 'TUG',# Leaving the fov + 'end': np.nan}, # only one video + '31b45d11-f909-42e5-b404-3451b4b6d238_074': {'name': 'TUG', 'session': '31b45d11-f909-42e5-b404-3451b4b6d238', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # Leaving the fov 'b233300d-2c6d-4735-aadb-c597da014629_075': {'name': 'ELBOWROM', 'session': 'b233300d-2c6d-4735-aadb-c597da014629', - 'start': np.nan, - 'end': np.nan}, + 'start': 1.5, + 'end': np.nan}, # TO REPROCESS person in background 'c2001341-2624-4595-91d1-9af78ed76421_076': {'name': '10mwt_1', 'session': 'c2001341-2624-4595-91d1-9af78ed76421', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'f5ec71e8-7898-4c51-993b-897014a3e8e3_077': {'name': '10mwrt', 'session': 'f5ec71e8-7898-4c51-993b-897014a3e8e3', 'start': np.nan, - 'end': np.nan}, + 'end': 6}, # TO REPROCESS 'ee86be93-b1da-4080-b445-176f6071e734_078': {'session': 'ee86be93-b1da-4080-b445-176f6071e734', 'name': '10mwrt', 'start': np.nan, - 'end': np.nan}, - '76b201f8-1950-414e-a48a-97bf932c61bc_079': {'name': '10mwt', # TO REPROCESS + 'end': 7}, # TO REPROCESS + '76b201f8-1950-414e-a48a-97bf932c61bc_079': {'name': '10mwt', 'session': '76b201f8-1950-414e-a48a-97bf932c61bc', 'start': 0, - 'end': 10}, + 'end': 10}, # TO REPROCESS '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_080': {'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', 'name': '10mwt', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS; one side has 12 extra seconds on the backend '4769f868-d487-4e0d-bda6-98eb6751b40a_081': {'session': '4769f868-d487-4e0d-bda6-98eb6751b40a', 'name': 'toe_stand', 'start': np.nan, - 'end': np.nan}, - '4769f868-d487-4e0d-bda6-98eb6751b40a_082': {'name': 'jump', # video missing + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS, one side is 4 seconds truncated + '4769f868-d487-4e0d-bda6-98eb6751b40a_082': {'name': 'jump', 'session': '4769f868-d487-4e0d-bda6-98eb6751b40a', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # 98eb6751b40a_082 '41599e7a-8eea-4b03-b5ef-57502504e879_083': {'name': 'toe_stand', 'session': '41599e7a-8eea-4b03-b5ef-57502504e879', - 'start': np.nan, - 'end': np.nan}, + 'start': 0, + 'end': 35}, # TO REPROCESS 'e4d2328b-6f01-4f4e-bea3-64076357de64_084': {'name': '10mwrt', 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64', - 'start': np.nan, - 'end': np.nan}, + 'start': 4, + 'end': 10}, # TO REPROCESS 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85_085': {'name': 'jump', 'session': 'f5e4cd75-e3c2-40ee-9596-ae767fa63e85', - 'start': np.nan, - 'end': np.nan}, + 'start': 3, + 'end': 9}, # TO REPROCESS 'ee86be93-b1da-4080-b445-176f6071e734_086': {'name': '10mwt_2', 'session': 'ee86be93-b1da-4080-b445-176f6071e734', 'start': np.nan, - 'end': np.nan}, -# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', # missing video -# 'name': '10mwrt', -# 'start': np.nan, -# 'end': np.nan}, - '6537ecc8-e44b-4405-a9fe-c09ede5e0550_088': {'name': '5xsts', # TO REPROCESS + 'end': 10}, # TO REPROCESS + '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', + 'name': '10mwrt', + 'start': np.nan, + 'end': np.nan}, # folder not on drive + '6537ecc8-e44b-4405-a9fe-c09ede5e0550_088': {'name': '5xsts', 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550', 'start': 0, - 'end': 15}, + 'end': 15}, # TO REPROCESS 'cda2db6e-b268-42ee-99d0-9cc358e893d1_089': {'name': '10mwrt', 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1', - 'start': np.nan, - 'end': np.nan}, - '621e5ae8-226b-4fc6-bbd9-df448328ff1f_090': {'name': 'jump_1',# no jump recorded + 'start': 5, + 'end': np.nan}, # TO REPROCESS + '621e5ae8-226b-4fc6-bbd9-df448328ff1f_090': {'name': 'jump_1', 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f', 'start': np.nan, - 'end': np.nan}, - '6de88f3d-b84a-4ee5-8003-a5fbb994278e_091': {'name': '10mwt',# nothing obvious + 'end': np.nan}, # no jump recorded + '6de88f3d-b84a-4ee5-8003-a5fbb994278e_091': {'name': '10mwt', 'session': '6de88f3d-b84a-4ee5-8003-a5fbb994278e', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'd37407d6-83a8-44f8-b5b2-c651db8edd9f_092': {'name': 'jump', 'session': 'd37407d6-83a8-44f8-b5b2-c651db8edd9f', 'start': np.nan, - 'end': np.nan}, - '4d0cfa49-baa9-4e49-8b34-2bc6727f6052_093': {'name': '10mwt',# nothing obvious + 'end': np.nan}, # hands almost exit fov + '4d0cfa49-baa9-4e49-8b34-2bc6727f6052_093': {'name': '10mwt', 'session': '4d0cfa49-baa9-4e49-8b34-2bc6727f6052', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36_094': {'name': '10mwt', 'session': 'e91690d8-1a0d-4031-a7ad-3fb1e23d7c36', 'start': np.nan, - 'end': np.nan}, - '5a3dd4e7-7293-46e6-9c0c-b77e2511860d_095': {'name': '10mwrt',# nothing to do, crazy run + 'end': np.nan}, # nothing obvious + '5a3dd4e7-7293-46e6-9c0c-b77e2511860d_095': {'name': '10mwrt', 'session': '5a3dd4e7-7293-46e6-9c0c-b77e2511860d', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # bad synchronization 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_096': {'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', 'name': '10MRT', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_097': {'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', 'name': '10MWT', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5_098': {'name': '10MWRT', 'session': 'de9b2159-afd0-4e11-8259-8f7d4e2e8ca5', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # person in background 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_099': {'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', 'name': 'TugLineRun', 'start': np.nan, - 'end': np.nan}, - '07d80cd7-3634-4485-b3a7-a9d592cf82b0_100': {'name': 'Brooke', # nothing obvious, quality seems bad (clinic) + 'end': np.nan}, # exits FOV + '07d80cd7-3634-4485-b3a7-a9d592cf82b0_100': {'name': 'Brooke', 'session': '07d80cd7-3634-4485-b3a7-a9d592cf82b0', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, quality seems bad (clinic) 'faa79e6d-f90e-4399-8b68-9e9f2dd00027_101': {'name': 'HOP', 'session': 'faa79e6d-f90e-4399-8b68-9e9f2dd00027', 'start': np.nan, - 'end': np.nan}, - '34f2095f-d076-4a3d-b094-75f968a93c21_102': {'name': 'jump',# nothing obvious + 'end': np.nan}, # nothing obvious + '34f2095f-d076-4a3d-b094-75f968a93c21_102': {'name': 'jump', 'session': '34f2095f-d076-4a3d-b094-75f968a93c21', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious 'ca44b787-96c1-4ed3-8151-89b4bd4310c4_103': {'name': 'toe_stand', 'session': 'ca44b787-96c1-4ed3-8151-89b4bd4310c4', 'start': np.nan, - 'end': np.nan}, - '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f_104': {'name': 'tug_cone',# nothing obvious, maybe Tina in the fov + 'end': np.nan}, # nothing obvious + '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f_104': {'name': 'tug_cone', 'session': '2f6340cd-d4ad-4ef1-b8c3-d1296821c78f', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, maybe Tina in the fov 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d_105': {'name': 'tug_cone', 'session': 'a08ec9d6-24f8-44f7-a59c-f603b7517e4d', 'start': np.nan, - 'end': np.nan}, - '78d9fbfe-04e0-4766-ba15-198e246d5e9c_106': {'name': '10mwt',# people in the background, should have been handled, nothing else obvious + 'end': np.nan}, # person in the background + '78d9fbfe-04e0-4766-ba15-198e246d5e9c_106': {'name': '10mwt', 'session': '78d9fbfe-04e0-4766-ba15-198e246d5e9c', 'start': np.nan, - 'end': np.nan}, - '773c33cd-a12d-46d2-af17-35fa7b4e83bd_107': {'name': 'tug_cone',# people in the background, should have been handled, nothing else obvious + 'end': np.nan}, # people in the background, should have been handled, nothing else obvious + '773c33cd-a12d-46d2-af17-35fa7b4e83bd_107': {'name': 'tug_cone', 'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # people in the background, should have been handled, nothing else obvious '715504d6-c823-4632-8c79-b7639bfdcf4a_108': {'name': 'tug_cone', 'session': '715504d6-c823-4632-8c79-b7639bfdcf4a', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # people in the background of one frame 'bb12568e-2303-4f87-95e4-baec67f2c023_109': {'name': 'tug_cone', 'session': 'bb12568e-2303-4f87-95e4-baec67f2c023', - 'start': np.nan, - 'end': np.nan}, + 'start': 5, + 'end': np.nan}, # TO REPROCESS people in foreground and background 'a7675b05-88da-4bb0-b27b-5357c3ec5807_110': {'name': 'tug_cone', 'session': 'a7675b05-88da-4bb0-b27b-5357c3ec5807', - 'start': np.nan, - 'end': np.nan}, - '7d9b3d14-2672-458a-94df-d35c7b5cdcf5_111': {'name': '5xsts',# nothing obvious, quality seems bad (clinic) + 'start': 4, + 'end': np.nan}, # TODO REPROCESS; person in frame + '7d9b3d14-2672-458a-94df-d35c7b5cdcf5_111': {'name': '5xsts', 'session': '7d9b3d14-2672-458a-94df-d35c7b5cdcf5', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # nothing obvious, quality seems bad (clinic) '9108903d-26b3-479a-ad49-955aebb868c7_112': {'name': 'TUGfast', 'session': '9108903d-26b3-479a-ad49-955aebb868c7', - 'start': np.nan, - 'end': np.nan}, - '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69_113': {'name': 'jump',# TO REPROCESS + 'start': 8, + 'end': 17}, # TO REPROCESS + '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69_113': {'name': 'jump', 'session': '25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69', 'start': 2, - 'end': np.nan}, - '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_114': {'name': 'tug_cone',# people in the background, should have been handled, nothing else obvious + 'end': np.nan}, # TO REPROCESS + '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_114': {'name': 'tug_cone', 'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # people in the background, should have been handled, nothing else obvious 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673_115': {'name': '5TSTS', 'session': 'bc4dd6dc-d9d2-4345-b130-d42bb1c4d673', 'start': np.nan, - 'end': np.nan}, - '65aa878e-4396-4a9c-a9a0-7a1e2c708f83_116': {'name': 'ARM_ROM',# nothing obvious, quality seems bad (clinic) + 'end': np.nan}, # person in background + '65aa878e-4396-4a9c-a9a0-7a1e2c708f83_116': {'name': 'ARM_ROM', 'session': '65aa878e-4396-4a9c-a9a0-7a1e2c708f83', 'start': np.nan, - 'end': np.nan}, - '1fc22b0c-1ef8-4b6d-b83b-85b12634905d_117': {'name': '10mwrt_1', # TO REPROCESS + 'end': np.nan}, # nothing obvious, quality seems bad (clinic) + '1fc22b0c-1ef8-4b6d-b83b-85b12634905d_117': {'name': '10mwrt_1', 'session': '1fc22b0c-1ef8-4b6d-b83b-85b12634905d', 'start': 3, - 'end': np.nan}, - '28ec73c6-025b-4ea4-b844-803e8205bf1a_118': {'name': 'brooke',# hands hidden + 'end': np.nan}, # TO REPROCESS + '28ec73c6-025b-4ea4-b844-803e8205bf1a_118': {'name': 'brooke', 'session': '28ec73c6-025b-4ea4-b844-803e8205bf1a', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # hands hidden '51003106-cdec-40f7-9204-0e21953bb4a7_119': {'name': '10mwt', 'session': '51003106-cdec-40f7-9204-0e21953bb4a7', 'start': np.nan, - 'end': np.nan}, - '109eabdf-e50d-459e-8917-c856338a720b_120': {'name': '10mwrt', # TO REPROCESS, not sure that will help + 'end': np.nan}, # nothing obvious + '109eabdf-e50d-459e-8917-c856338a720b_120': {'name': '10mwrt', 'session': '109eabdf-e50d-459e-8917-c856338a720b', 'start': 1, - 'end': np.nan}, + 'end': np.nan}, # TO REPROCESS, not sure that will help 'aca92056-3f67-403c-8d6a-513055274ffe_121': {'session': 'aca92056-3f67-403c-8d6a-513055274ffe', 'name': 'brooke', 'start': np.nan, - 'end': np.nan}, + 'end': 7}, # VIDEOS DIFFERENT LENGTHS; one side is truncated 'aca92056-3f67-403c-8d6a-513055274ffe_122': {'session': 'aca92056-3f67-403c-8d6a-513055274ffe', 'name': 'tug_cone', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS; one side is truncated 'aca92056-3f67-403c-8d6a-513055274ffe_123': {'name': '5xsts', 'session': 'aca92056-3f67-403c-8d6a-513055274ffe', 'start': np.nan, - 'end': np.nan}, - '25d785ae-f49e-4531-b14c-86d6d5e9d144_124': {'name': 'toe_stand',# TO REPROCESS + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS; one side is truncated + '25d785ae-f49e-4531-b14c-86d6d5e9d144_124': {'name': 'toe_stand', 'session': '25d785ae-f49e-4531-b14c-86d6d5e9d144', 'start': 0, - 'end': 31}, - '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a_125': {'name': '10mrt', # fast run + 'end': 31}, # TO REPROCESS + '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a_125': {'name': '10mrt', 'session': '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a', 'start': np.nan, - 'end': np.nan}, + 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS, one side is 1 second truncated 'bca0aad8-c129-4a62-bef3-b5de1659df5e_126': {'name': 'tug_cone', 'session': 'bca0aad8-c129-4a62-bef3-b5de1659df5e', 'start': np.nan, - 'end': np.nan}, - '98fc0617-1f5e-44ba-92c9-a32f09899295_127': {'name': 'brooke',# nothing obvious + 'end': 9}, # TO REPROCESS; person in background + '98fc0617-1f5e-44ba-92c9-a32f09899295_127': {'name': 'brooke', 'session': '98fc0617-1f5e-44ba-92c9-a32f09899295', - 'start': np.nan, - 'end': np.nan}} + 'start': 10, + 'end': np.nan} # TO REPROCESS + } def get_video_info(video_file): @@ -549,15 +549,14 @@ def trim_video_by_frames(video_path, start_frame, frame_duration, frame_rate, tr os.system(ffmpeg_cmd) -for count, session_id_all in enumerate(all_bad_data): - session_id = session_id_all.split('_')[0] - trial_name = all_bad_data[session_id_all]['name'] +for count, session_id in enumerate(all_bad_data): + trial_name = all_bad_data[session_id]['name'] trial_id = get_trial_id(session_id, trial_name) trial_json = get_trial_json(trial_id) for k, video in enumerate(trial_json["videos"]): # Download the video - videoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "InputMedia") + videoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "InputMedia") os.makedirs(videoDir, exist_ok=True) video_path = os.path.join(videoDir, trial_id + ".mov") download_file(video["video"], video_path) From 2f87ab05ce641e70bd02560a8f33792716a897de Mon Sep 17 00:00:00 2001 From: Antoine Falisse Date: Mon, 25 Mar 2024 16:18:10 -0700 Subject: [PATCH 4/5] wip --- .gitignore | 2 + Examples/example_trim_videos.py | 117 +++++++++++++++++++++----------- utils.py | 27 ++++++++ 3 files changed, 107 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index 96bb760f..aeb23b74 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ Data/* *DS_Store +.vscode/* + UtilsDynamicSimulations/OpenSimAD/build-ExpressionGraphF/* UtilsDynamicSimulations/OpenSimAD/build-ExternalFunctionF/* UtilsDynamicSimulations/OpenSimAD/install-ExternalFunctionF/* diff --git a/Examples/example_trim_videos.py b/Examples/example_trim_videos.py index bd4cd001..92f2443c 100644 --- a/Examples/example_trim_videos.py +++ b/Examples/example_trim_videos.py @@ -3,8 +3,10 @@ sys.path.append("..") import numpy as np import json +import shutil +import traceback -from utils import get_trial_id, get_trial_json, download_file, post_video_to_trial, delete_video_from_trial +from utils import get_trial_id, get_trial_json, download_file, post_video_to_trial, delete_video_from_trial, delete_results, set_trial_status data_folder = os.path.join("../Data/Parker") os.makedirs(data_folder, exist_ok=True) @@ -68,12 +70,12 @@ 'end': 9}, # TO REPROCESS, not sure it will help 'b233300d-2c6d-4735-aadb-c597da014629_014': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', 'name': '10MRT', - 'start': np.nan, - 'end': np.nan}, # nothing obvious + 'start': 7, + 'end': np.nan}, # nothing obvious REDO 'fa856382-bf8d-411a-b086-a2d74fab9d1b_015': {'name': '10mrt', 'session': 'fa856382-bf8d-411a-b086-a2d74fab9d1b', 'start': np.nan, - 'end': 6}, # TO REPROCESS, person in background + 'end': 4}, # TO REPROCESS, person in background REDO '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_016': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', 'name': '10mwrt_1', 'start': np.nan, @@ -89,7 +91,7 @@ '43db734e-13fb-4d6d-9223-09f967dd40f0_019': {'name': 'toe_stand', 'session': '43db734e-13fb-4d6d-9223-09f967dd40f0', 'start': np.nan, - 'end': np.nan}, # nothing obvious + 'end': np.nan}, # nothing obvious, v different lengths '8b7a734d-2874-42f7-94a2-c6026ec35d99_020': {'name': '10mwrt', 'session': '8b7a734d-2874-42f7-94a2-c6026ec35d99', 'start': np.nan, @@ -282,10 +284,10 @@ 'session': '822926eb-1c7d-4298-84c5-7ead6909387b', 'start': 9, 'end': np.nan}, # TO REPROCESS, people in the background - '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', - 'name': 'Curl', - 'start': np.nan, - 'end': np.nan}, # folder not on drive +# '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', +# 'name': 'Curl', +# 'start': np.nan, +# 'end': np.nan}, # folder not on drive '8d2f7856-3996-462f-bb2b-f020e7053a90_069': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'name': 'TUGCone', 'start': np.nan, @@ -294,10 +296,10 @@ 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'start': np.nan, 'end': np.nan}, # missing video - 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', - 'name': 'TIPTOE', - 'start': np.nan, - 'end': np.nan}, # [videos missing?] +# 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', +# 'name': 'TIPTOE', +# 'start': np.nan, +# 'end': np.nan}, # [videos missing?] 'ca174c27-d0fe-4edd-8799-9ef3ea053086_072': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', 'name': 'TIPTOEV2', 'start': np.nan, @@ -333,7 +335,7 @@ '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae_080': {'session': '90e3af8d-3aac-4d97-ac5a-70f5c4e911ae', 'name': '10mwt', 'start': np.nan, - 'end': np.nan}, # VIDEOS DIFFERENT LENGTHS; one side has 12 extra seconds on the backend + 'end': 10}, # VIDEOS DIFFERENT LENGTHS; one side has 12 extra seconds on the backend '4769f868-d487-4e0d-bda6-98eb6751b40a_081': {'session': '4769f868-d487-4e0d-bda6-98eb6751b40a', 'name': 'toe_stand', 'start': np.nan, @@ -358,10 +360,10 @@ 'session': 'ee86be93-b1da-4080-b445-176f6071e734', 'start': np.nan, 'end': 10}, # TO REPROCESS - '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', - 'name': '10mwrt', - 'start': np.nan, - 'end': np.nan}, # folder not on drive +# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', +# 'name': '10mwrt', +# 'start': np.nan, +# 'end': np.nan}, # folder not on drive '6537ecc8-e44b-4405-a9fe-c09ede5e0550_088': {'name': '5xsts', 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550', 'start': 0, @@ -549,30 +551,67 @@ def trim_video_by_frames(video_path, start_frame, frame_duration, frame_rate, tr os.system(ffmpeg_cmd) -for count, session_id in enumerate(all_bad_data): - trial_name = all_bad_data[session_id]['name'] +for count, session_id_all in enumerate(all_bad_data): + + # start from count=69 + if count != 2: + continue + + session_id = session_id_all.split('_')[0] + trial_name = all_bad_data[session_id_all]['name'] trial_id = get_trial_id(session_id, trial_name) trial_json = get_trial_json(trial_id) - for k, video in enumerate(trial_json["videos"]): + # for k, video in enumerate(trial_json["videos"]): + + # # Download the video + # videoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "InputMedia") + # os.makedirs(videoDir, exist_ok=True) + # video_path = os.path.join(videoDir, trial_id + ".mov") + # # download_file(video["video"], video_path) + + # trimmedVideoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "Trimmed") + # os.makedirs(trimmedVideoDir, exist_ok=True) + + # file_name = os.path.basename(video_path) + # trimmed_video_path = os.path.join(trimmedVideoDir, file_name) - # Download the video - videoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "InputMedia") - os.makedirs(videoDir, exist_ok=True) - video_path = os.path.join(videoDir, trial_id + ".mov") - download_file(video["video"], video_path) + # # Trim the video + # frame_rate, frame_count = get_video_info(video_path) + # video_duration = frame_count / frame_rate - # # Trim the video - # frame_rate, frame_count = get_video_info(video_path) - # video_duration = frame_count / frame_rate - # n_frame_trim_start = int(np.floor(bad_data_trim_needed[session_id]['start'] * frame_rate)) - # desired_num_frames = int(np.floor((bad_data_trim_needed[session_id]['end'] - bad_data_trim_needed[session_id]['start']) * frame_rate)) - # trimmedVideoDir = os.path.join(data_folder, session_id, trial_id, "Videos", video['id'], "TrimmedInputMedia") - # os.makedirs(trimmedVideoDir, exist_ok=True) - # trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") - # trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, frame_rate, trimmed_video_path) + # start = all_bad_data[session_id_all]['start'] + # end = all_bad_data[session_id_all]['end'] + # # if both are nan, skip + # if np.isnan(start) and np.isnan(end): + # # Copy video to trimmed video directory + # shutil.copy2(video_path, trimmed_video_path) + # continue + # # if end is not nan and start is nan, set start to 0 + # if np.isnan(start): + # start = 0 + # # if start is not nan and end is nan, set end to video duration + # if np.isnan(end): + # end = video_duration + # # if end is more than video duration, set end to video duration + # if end > video_duration: + # end = video_duration - # # Post the trimmed video - # post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) + # n_frame_trim_start = int(np.floor(start * frame_rate)) + # desired_num_frames = int(np.floor((end - start) * frame_rate)) - # # Delete the old video - # delete_video_from_trial(video['id']) \ No newline at end of file + # trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") + # # trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, frame_rate, trimmed_video_path) + # test = 1 + + # # Post the trimmed video + # post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) + + # # Delete the old video + # delete_video_from_trial(video['id']) + + # # Delete the results of that trial + # delete_results(trial_id) + + # Change the status to stopped + set_trial_status(trial_id, "stopped") + test=1 \ No newline at end of file diff --git a/utils.py b/utils.py index 9dc10af7..6c5ee595 100644 --- a/utils.py +++ b/utils.py @@ -576,6 +576,33 @@ def delete_video_from_trial(video_id): requests.delete("{}videos/{}/".format(API_URL, video_id), headers = {"Authorization": "Token {}".format(API_TOKEN)}) +def delete_results(trial_id, tag=None, resultNum=None): + # Delete specific result number, or all results with a specific tag, or all results if tag==None + if resultNum != None: + resultNums = [resultNum] + elif tag != None: + trial = get_trial_json(trial_id) + resultNums = [r['id'] for r in trial['results'] if r['tag']==tag] + + elif tag == None: + trial = get_trial_json(trial_id) + resultNums = [r['id'] for r in trial['results']] + + for rNum in resultNums: + requests.delete(API_URL + "results/{}/".format(rNum), + headers = {"Authorization": "Token {}".format(API_TOKEN)}) + +def set_trial_status(trial_id, status): + + # Available statuses: 'done', 'error', 'stopped', 'reprocess' + # 'processing' and 'recording also exist, but it does not make sense to set them manually. + # Throw error if status is not one of the above. + if status not in ['done', 'error', 'stopped', 'reprocess']: + raise ValueError('Invalid status. Available statuses: done, error, stopped, reprocess') + + requests.patch(API_URL+"trials/{}/".format(trial_id), data={'status': status}, + headers = {"Authorization": "Token {}".format(API_TOKEN)}) + def get_syncd_videos(trial_id,session_path): trial = requests.get("{}trials/{}/".format(API_URL,trial_id), From 17e2c72e0752394e7b70e79627f749418c5c4f98 Mon Sep 17 00:00:00 2001 From: Antoine Falisse Date: Tue, 26 Mar 2024 11:45:17 -0700 Subject: [PATCH 5/5] reprocessing all data --- Examples/example_trim_videos.py | 178 +++++++++++++++++++------------- 1 file changed, 106 insertions(+), 72 deletions(-) diff --git a/Examples/example_trim_videos.py b/Examples/example_trim_videos.py index 92f2443c..596b6ca2 100644 --- a/Examples/example_trim_videos.py +++ b/Examples/example_trim_videos.py @@ -11,6 +11,32 @@ data_folder = os.path.join("../Data/Parker") os.makedirs(data_folder, exist_ok=True) +# Test +# all_bad_data = \ +# {'19feaf9b-67ae-4652-bcdd-b42a447c3d31_000': {'session': '19feaf9b-67ae-4652-bcdd-b42a447c3d31', +# 'name': 'test', +# 'start': 0, +# 'end': 2}, # nothing obvious +# } + +sessions_to_exclude = [ + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_001', + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_002', + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_003', + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_004', + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_005', + '74cd2ec6-de3c-4a0e-a8c9-44edbffe0b86_006', + '9108903d-26b3-479a-ad49-955aebb868c7_068', + '8d2f7856-3996-462f-bb2b-f020e7053a90_070', + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071', + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_072', + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_073', + '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087' + +] + +# subject cannot perform activity: 25ebd0a3-e8ce-4a7a-ad91-0c1d94753b69_113 + all_bad_data = \ {'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_000': {'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', 'name': 'arm_rom', @@ -71,11 +97,11 @@ 'b233300d-2c6d-4735-aadb-c597da014629_014': {'session': 'b233300d-2c6d-4735-aadb-c597da014629', 'name': '10MRT', 'start': 7, - 'end': np.nan}, # nothing obvious REDO + 'end': np.nan}, # # TO REPROCESS 'fa856382-bf8d-411a-b086-a2d74fab9d1b_015': {'name': '10mrt', 'session': 'fa856382-bf8d-411a-b086-a2d74fab9d1b', 'start': np.nan, - 'end': 4}, # TO REPROCESS, person in background REDO + 'end': 4}, # TO REPROCESS, person in background '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_016': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', 'name': '10mwrt_1', 'start': np.nan, @@ -94,7 +120,7 @@ 'end': np.nan}, # nothing obvious, v different lengths '8b7a734d-2874-42f7-94a2-c6026ec35d99_020': {'name': '10mwrt', 'session': '8b7a734d-2874-42f7-94a2-c6026ec35d99', - 'start': np.nan, + 'start': 3, 'end': np.nan}, # fast run 'ead8a2fc-c926-464f-9965-d155a62eead8_021': {'name': 'curls', 'session': 'ead8a2fc-c926-464f-9965-d155a62eead8', @@ -135,7 +161,7 @@ '3a681925-50b5-470e-a44a-c1cab743f58b_030': {'name': '10mwt', 'session': '3a681925-50b5-470e-a44a-c1cab743f58b', 'start': np.nan, - 'end': np.nan}, # nothing obvious, quality seems bad (clinic) + 'end': 9}, # nothing obvious, quality seems bad (clinic) '773c33cd-a12d-46d2-af17-35fa7b4e83bd_031': {'session': '773c33cd-a12d-46d2-af17-35fa7b4e83bd', 'name': '10mrt', 'start': np.nan, @@ -174,7 +200,7 @@ 'end': np.nan}, # fast run 'd10ea979-2a29-4bd7-a3ac-d475b5878134_040': {'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', 'name': 'jump', - 'start': 1, + 'start': 0.1, 'end': np.nan}, # TODO REPROCESS 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e_041': {'name': 'curls', 'session': 'dcfddd1b-39f9-4d0e-80c7-b68caa612a1e', @@ -211,7 +237,7 @@ 'd10ea979-2a29-4bd7-a3ac-d475b5878134_049': {'name': 'toe_stand', 'session': 'd10ea979-2a29-4bd7-a3ac-d475b5878134', 'start': np.nan, - 'end': np.nan}, # nothing obvious + 'end': np.nan}, # nothing obvious '19788965-c4a4-481e-a687-f2055b6d85cb_050': {'session': '19788965-c4a4-481e-a687-f2055b6d85cb', 'name': 'stairs_ascend', 'start': np.nan, @@ -284,10 +310,10 @@ 'session': '822926eb-1c7d-4298-84c5-7ead6909387b', 'start': 9, 'end': np.nan}, # TO REPROCESS, people in the background -# '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', -# 'name': 'Curl', -# 'start': np.nan, -# 'end': np.nan}, # folder not on drive + '9108903d-26b3-479a-ad49-955aebb868c7_068': {'session': '9108903d-26b3-479a-ad49-955aebb868c7', + 'name': 'Curl', + 'start': np.nan, + 'end': np.nan}, # folder not on drive '8d2f7856-3996-462f-bb2b-f020e7053a90_069': {'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'name': 'TUGCone', 'start': np.nan, @@ -296,10 +322,10 @@ 'session': '8d2f7856-3996-462f-bb2b-f020e7053a90', 'start': np.nan, 'end': np.nan}, # missing video -# 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', -# 'name': 'TIPTOE', -# 'start': np.nan, -# 'end': np.nan}, # [videos missing?] + 'ca174c27-d0fe-4edd-8799-9ef3ea053086_071': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', + 'name': 'TIPTOE', + 'start': np.nan, + 'end': np.nan}, # [videos missing?] 'ca174c27-d0fe-4edd-8799-9ef3ea053086_072': {'session': 'ca174c27-d0fe-4edd-8799-9ef3ea053086', 'name': 'TIPTOEV2', 'start': np.nan, @@ -347,7 +373,7 @@ '41599e7a-8eea-4b03-b5ef-57502504e879_083': {'name': 'toe_stand', 'session': '41599e7a-8eea-4b03-b5ef-57502504e879', 'start': 0, - 'end': 35}, # TO REPROCESS + 'end': 33}, # TO REPROCESS 'e4d2328b-6f01-4f4e-bea3-64076357de64_084': {'name': '10mwrt', 'session': 'e4d2328b-6f01-4f4e-bea3-64076357de64', 'start': 4, @@ -360,10 +386,10 @@ 'session': 'ee86be93-b1da-4080-b445-176f6071e734', 'start': np.nan, 'end': 10}, # TO REPROCESS -# '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', -# 'name': '10mwrt', -# 'start': np.nan, -# 'end': np.nan}, # folder not on drive + '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1_087': {'session': '9ce91ceb-2bf8-4544-ae22-3da5ad3cb9a1', + 'name': '10mwrt', + 'start': np.nan, + 'end': np.nan}, # folder not on drive '6537ecc8-e44b-4405-a9fe-c09ede5e0550_088': {'name': '5xsts', 'session': '6537ecc8-e44b-4405-a9fe-c09ede5e0550', 'start': 0, @@ -371,12 +397,12 @@ 'cda2db6e-b268-42ee-99d0-9cc358e893d1_089': {'name': '10mwrt', 'session': 'cda2db6e-b268-42ee-99d0-9cc358e893d1', 'start': 5, - 'end': np.nan}, # TO REPROCESS + 'end': np.nan}, # TO REPROCESS REDO '621e5ae8-226b-4fc6-bbd9-df448328ff1f_090': {'name': 'jump_1', 'session': '621e5ae8-226b-4fc6-bbd9-df448328ff1f', 'start': np.nan, 'end': np.nan}, # no jump recorded - '6de88f3d-b84a-4ee5-8003-a5fbb994278e_091': {'name': '10mwt', + '6de88f3d-b84a-4ee5-8003-a5fbb994278e_091': {'name': '10mwt', 'session': '6de88f3d-b84a-4ee5-8003-a5fbb994278e', 'start': np.nan, 'end': np.nan}, # nothing obvious @@ -511,7 +537,7 @@ '25d785ae-f49e-4531-b14c-86d6d5e9d144_124': {'name': 'toe_stand', 'session': '25d785ae-f49e-4531-b14c-86d6d5e9d144', 'start': 0, - 'end': 31}, # TO REPROCESS + 'end': 30.5}, # TO REPROCESS REDO '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a_125': {'name': '10mrt', 'session': '9e5d7c34-d9fc-43f7-85e9-d3e5def7ef3a', 'start': np.nan, @@ -526,7 +552,6 @@ 'end': np.nan} # TO REPROCESS } - def get_video_info(video_file): # Define the ffprobe command to get frame rate frame_rate_cmd = f'ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1 {video_file}' @@ -546,72 +571,81 @@ def get_video_info(video_file): def trim_video_by_frames(video_path, start_frame, frame_duration, frame_rate, trimmed_video_path): # Build the ffmpeg command to trim without re-encoding - ffmpeg_cmd = f'ffmpeg -i {video_path} -ss {start_frame / frame_rate} -frames:v {frame_duration} -c:v copy -c:a copy {trimmed_video_path}' - - os.system(ffmpeg_cmd) + ffmpeg_cmd = f'ffmpeg -i {video_path} -ss {start_frame / frame_rate} -frames:v {frame_duration} -c:v copy {trimmed_video_path}' + os.system(ffmpeg_cmd) for count, session_id_all in enumerate(all_bad_data): - - # start from count=69 - if count != 2: + + if session_id_all in sessions_to_exclude: continue + # if count < 90: + # continue + + # if count > 89: + # continue + + # if count != 124: + # continue + session_id = session_id_all.split('_')[0] trial_name = all_bad_data[session_id_all]['name'] trial_id = get_trial_id(session_id, trial_name) trial_json = get_trial_json(trial_id) - # for k, video in enumerate(trial_json["videos"]): + for k, video in enumerate(trial_json["videos"]): - # # Download the video - # videoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "InputMedia") - # os.makedirs(videoDir, exist_ok=True) - # video_path = os.path.join(videoDir, trial_id + ".mov") - # # download_file(video["video"], video_path) + # Download the video + videoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "InputMedia") + os.makedirs(videoDir, exist_ok=True) + video_path = os.path.join(videoDir, trial_id + ".mov") + # download_file(video["video"], video_path) - # trimmedVideoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "Trimmed") - # os.makedirs(trimmedVideoDir, exist_ok=True) + trimmedVideoDir = os.path.join(data_folder, session_id_all, trial_id, "Videos", video['id'], "Trimmed") + os.makedirs(trimmedVideoDir, exist_ok=True) - # file_name = os.path.basename(video_path) - # trimmed_video_path = os.path.join(trimmedVideoDir, file_name) + file_name = os.path.basename(video_path) + trimmed_video_path = os.path.join(trimmedVideoDir, file_name) - # # Trim the video - # frame_rate, frame_count = get_video_info(video_path) - # video_duration = frame_count / frame_rate + # Trim the video + frame_rate, frame_count = get_video_info(video_path) + video_duration = frame_count / frame_rate - # start = all_bad_data[session_id_all]['start'] - # end = all_bad_data[session_id_all]['end'] - # # if both are nan, skip - # if np.isnan(start) and np.isnan(end): - # # Copy video to trimmed video directory - # shutil.copy2(video_path, trimmed_video_path) - # continue - # # if end is not nan and start is nan, set start to 0 - # if np.isnan(start): - # start = 0 - # # if start is not nan and end is nan, set end to video duration - # if np.isnan(end): - # end = video_duration - # # if end is more than video duration, set end to video duration - # if end > video_duration: - # end = video_duration + start = all_bad_data[session_id_all]['start'] + end = all_bad_data[session_id_all]['end'] + # if both are nan, skip + reprocess_trial = True + if np.isnan(start) and np.isnan(end): + # Copy video to trimmed video directory + # shutil.copy2(video_path, trimmed_video_path) + reprocess_trial = False + continue + # if end is not nan and start is nan, set start to 0 + if np.isnan(start): + start = 0 + # if start is not nan and end is nan, set end to video duration + if np.isnan(end): + end = video_duration + # if end is more than video duration, set end to video duration + if end > video_duration: + end = video_duration - # n_frame_trim_start = int(np.floor(start * frame_rate)) - # desired_num_frames = int(np.floor((end - start) * frame_rate)) + n_frame_trim_start = int(np.floor(start * frame_rate)) + desired_num_frames = int(np.floor((end - start) * frame_rate)) - # trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") - # # trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, frame_rate, trimmed_video_path) - # test = 1 + trimmed_video_path = os.path.join(trimmedVideoDir, trial_id + ".mov") + # trim_video_by_frames(video_path, n_frame_trim_start, desired_num_frames, frame_rate, trimmed_video_path) - # # Post the trimmed video - # post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) + # Post the trimmed video + post_video_to_trial(trimmed_video_path,trial_id,video['device_id'],json.dumps(video['parameters'])) - # # Delete the old video - # delete_video_from_trial(video['id']) + # Delete the old video + delete_video_from_trial(video['id']) - # # Delete the results of that trial - # delete_results(trial_id) + if reprocess_trial: + # Delete the results of that trial + delete_results(trial_id) - # Change the status to stopped - set_trial_status(trial_id, "stopped") - test=1 \ No newline at end of file + # Change the status to stopped + set_trial_status(trial_id, "stopped") + test=1 \ No newline at end of file