Data models
Defined in data_models/.
Trajectory3d(trajectory_3d.py) is the currency of the posthoc pipeline:start_frame,end_frame, a(frames, markers, 3)triangulated_dataarray, plusreprojection_errorandreprojection_error_by_cameraarrays.from_observations()stacks per-frame observations and rejects gaps in frame numbers outright ("Observations are not contiguous").save_to_arrays()writes{prefix}3d_data_spatial_xyz.npy,{prefix}reprojection_error.npy, and{prefix}reprojection_error_by_camera.npy. Within SkellyForge, onlypipelines/dlc_pipeline.pycalls it, to persist raw triangulation output. FreeMoCap's own triangulation step does not use it. It constructsTrajectory3ddirectly and saves results through theskellymodelsHuman manager instead.Observation3dholds one frame of named triangulated points with optional error data;to_point_dictionary()converts it to a dict of namedPoint3dvalues, skipping NaN markers.Trajectory2dis a thin(start, end, points)wrapper, andtype_overloads.pyaliases the dict shapes used to group 2D observations by camera and frame.