Package: wf-process-pose-data
# process_pose_dataTools for fetching, processing, visualizing, and analyzing Wildflower human pose data## Task listSwitch parallel overlay code back toimap_unordered()(for less chunky progress bars) but sort output before concatenatingEnsure that all visual specs (colors, line widths, etc.) propagate to video overlayAdd drawing primitive towf-cv-utilsfor text with backgroundUse new text-with-background drawing primitive for pose labelsAdd timestamp to video overlaysConsider getting rid ofgeom_rendermoduleFix up progress bars so we can have task-level and segment-level progress bars without logging in notebookFix up progress bars so they work properly outside of notebook with multiprocessingAdd indentation/labeling on segment-level progress barsClean up argument ordering inreconstruct_poses_3d_alphapose_local_time_segmentAddposes_2d_json_formatoption toreconstruct_poses_3dentry pointAdd endpoints for all processing functionsAdd ability to write locally generated object IDs to HoneycombCreate separate workers for uploading to Honeycomb 3D poses, 3D pose tracks, interpolated 3D pose tracks, 3D pose identification, 3D pose track identificationDockerize pipelineSet up pipeline for AirflowAdd additional machinery for checking UWB data integrity (e.g., duplicates)Retoolgenerate_inference_metadata_reconstruct_3d_poses_alphapose_localto exclude cameras without calibration dataMake function to delete Honeycomb inference executionsMake function to delete local inference metadataMake function to delete local 3D pose filesMake function for deleting local 3D pose dataRewrite all log messages so formatting isn’t called if log isn’t printedMake functions handle empty poses (all keypointsNaN) more gracefully (e.g.,score_pose_pairs(),draw_pose_2d())Make visualization functions handle missing fields (e.g.,pose_quality) more gracefullyFigure out inconsistent behavior ofgroupby(…).apply(…)(under what conditions does it add grouping variables to index?)For functions that act on dataframes, make it optional to check dataframe structure (e.g., only one timestamp and camera pair)For functions than iterate over previous functions, making naming and approach consistent (e.g., always use apply?)Addkeypoint_categoriesinfo to pose models in Honeycomb?Be consistent about whether to convert track labels to integers (where possible)Remove dependence on OpenCV by adding necessary functionality tocv_utilsConsider refactoring split betweenvideo_ioandcv_utilsFix upcv_utilsMatplotlib drawing functions so that they accept an axis (or figure, as appropriate)Fix up handling of background image alpha (shouldn’t assume white background)Fix up _y_ axis inversion for images (go back tocv_utils?)Add option of specifying Honeycomb client info for visualization functions that require HoneycombReinstatesns.set()for Seaborn plots without making it spill over into non-Seaborn plots (see [here](https://stackoverflow.com/questions/26899310/python-seaborn-to-reset-back-to-the-matplotlib))Refactor code invisualizeto make it less repetitive (same pattern over and over for[verb]_by_camera)Fix up legend on pose track timelinesAdd visualization for number of poses per camera per timestampReplacecv.triangulatePoints()to increase speed (and hopefully accuracy)Get pose video overlays working again (for data with track labels)Rewrite geom rendering functions to handle the possibility of no track labelsRewrite function which overlays geoms on videos so that user can specify a time span that it is a subset of the geoms and/or the videoMake all time inputs more permissive (in terms of type/format) and make all time outputs more consistentBe consistent about accepting timestamp arguments in any format parseable bypd.to_datetime()