--- a
+++ b/datasets/OUMVLP/rearrange_OUMVLP_pose.py
@@ -0,0 +1,44 @@
+import argparse
+import os
+import shutil
+from pathlib import Path
+from typing import Tuple
+from tqdm import tqdm
+
+
+TOTAL_SUBJECTS = 10307
+
+
+def sanitize(name: str) -> Tuple[str, str]:
+    return name.split('_')
+
+
+def rearrange(input_path: Path, output_path: Path) -> None:
+    os.makedirs(output_path, exist_ok=True)
+    progress = tqdm(total=TOTAL_SUBJECTS)
+    for folder in input_path.iterdir():
+        subject = folder.name
+        for sid in folder.iterdir():
+            view, seq = sanitize(sid.name)
+            src = os.path.join(input_path, subject,sid.name)
+            dst = os.path.join(output_path, subject, seq, view)
+            os.makedirs(dst, exist_ok=True)
+            for subfile in os.listdir(src):
+                if subfile not in os.listdir(dst) and subfile.endswith('.json'):
+                    os.symlink(os.path.join(src, subfile),
+                               os.path.join(dst, subfile))
+        progress.update(1)
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='OUMVLP rearrange tool')
+    parser.add_argument('-i', '--input_path', required=True, type=str,
+                        help='Root path of raw dataset.')
+    parser.add_argument('-o', '--output_path', default='OUMVLP_rearranged', type=str,
+                        help='Root path for output.')
+
+    args = parser.parse_args()
+
+    input_path = Path(args.input_path).resolve()
+    output_path = Path(args.output_path).resolve()
+    rearrange(input_path, output_path)