moseq2_extract package
CLI Module
moseq2-extract
moseq2-extract [OPTIONS] COMMAND [ARGS]...
Options
- --version
- Show the version and exit. - Default:
- False
 
agg-to-index
Generate an index file from aggregated results with default as group names
moseq2-extract agg-to-index [OPTIONS]
Options
- -i, --input-dir <input_dir>
- Directory for aggregated results folder - Default:
- /home/wingillis/dev/moseq/moseq2-extract/docs/aggregate_results
 
aggregate-results
Copies all extracted results (h5, yaml, mp4) files from all extracted sessions to a new directory for modeling and analysis
moseq2-extract aggregate-results [OPTIONS]
Options
- -i, --input-dir <input_dir>
- Directory to find h5 files - Default:
- /home/wingillis/dev/moseq/moseq2-extract/docs
 
- -f, --format <format>
- New file name formats from resepective metadata - Default:
- {start_time}_{session_name}_{subject_name}
 
- -o, --output-dir <output_dir>
- Location for storing all results together - Default:
- /home/wingillis/dev/moseq/moseq2-extract/docs/aggregate_results/
 
- --mouse-threshold <mouse_threshold>
- Threshold value for mean depth to include frames in aggregated results - Default:
- 0
 
batch-extract
Batch processes all the raw depth recordings located in the input folder.
moseq2-extract batch-extract [OPTIONS] INPUT_FOLDER
Options
- -p, --progress-bar
- Show verbose progress bars. - Default:
- False
 
- --config-file <config_file>
- --recompute-bg <recompute_bg>
- Overwrite previously computed background image - Default:
- False
 
- --use-plane-bground
- Use a plane fit for the background. Useful when mice don’t move much - Default:
- False
 
- --output-dir <output_dir>
- Output directory to save the results h5 file - Default:
- proc
 
- --noise-tolerance <noise_tolerance>
- Extent of noise to accept during RANSAC Plane ROI computation. - Default:
- 30
 
- --erode-iterations <erode_iterations>
- Number of erosion iterations to decrease bucket floor size. - Default:
- 0
 
- --bg-roi-erode <bg_roi_erode>
- Size of cv2 Structure Element to erode roi. - Default:
- 1, 1
 
- --dilate-iterations <dilate_iterations>
- Number of dilation iterations to increase bucket floor size. - Default:
- 1
 
- --bg-sort-roi-by-position-max-rois <bg_sort_roi_by_position_max_rois>
- The number of maximum ROIs sorted by area - Default:
- 2
 
- --bg-sort-roi-by-position <bg_sort_roi_by_position>
- Sort ROIs by position - Default:
- False
 
- --bg-roi-fill-holes <bg_roi_fill_holes>
- Fill holes in ROI - Default:
- True
 
- --bg-roi-gradient-kernel <bg_roi_gradient_kernel>
- Kernel size for Sobel gradient filtering - Default:
- 7
 
- --bg-roi-gradient-threshold <bg_roi_gradient_threshold>
- Gradient must be less than threshold to include points - Default:
- 3000
 
- --bg-roi-gradient-filter <bg_roi_gradient_filter>
- Use graident filter to exclude walls for detected ROI - Default:
- False
 
- --bg-roi-depth-range <bg_roi_depth_range>
- Range to search for floor of arena (in mm) - Default:
- 650, 750
 
- --manual-set-depth-range
- Flag to deactivate auto depth range setting. - Default:
- False
 
- --camera-type <camera_type>
- Camera type used for recording for auto-sets bg-roi-weights to precomputed values for different camera types. Possible types: [“kinect”, “azure”, “realsense”] - Default:
- auto
- Options:
- auto | kinect | azure | realsense 
 
- --bg-roi-weights <bg_roi_weights>
- ROI feature weighting (area, extent, dist to center) - Default:
- 1, 0.1, 1
 
- --bg-roi-index <bg_roi_index>
- Index of which detected ROI mask to use - Default:
- 0
 
- --bg-roi-shape <bg_roi_shape>
- Shape to use to detect roi (ellipse or rect) - Default:
- ellipse
 
- --bg-roi-dilate <bg_roi_dilate>
- Size of StructuringElement to dilate roi - Default:
- 10, 10
 
- -m, --mapping <mapping>
- Ffprobe stream selection variable. Default: DEPTH - Default:
- DEPTH
 
- -t, --threads <threads>
- Number of threads for encoding - Default:
- 8
 
- --delete
- Delete raw file if encoding is sucessful - Default:
- False
 
- --fps <fps>
- Video FPS - Default:
- 30
 
- -b, --chunk-size <chunk_size>
- Chunk size - Default:
- 3000
 
- -o, --output-file <output_file>
- Path to output file 
- --skip-completed
- Will skip the extraction if it is already completed. - Default:
- False
 
- --compress-threads <compress_threads>
- Number of threads for encoding - Default:
- 3
 
- --compress-chunk-size <compress_chunk_size>
- Chunk size for .avi compression - Default:
- 3000
 
- --compress <compress>
- Convert .dat to .avi after successful extraction - Default:
- False
 
- --frame-trim <frame_trim>
- Frames to trim from beginning and end of data - Default:
- 0, 0
 
- --model-smoothing-clips <model_smoothing_clips>
- Model smoothing clips - Default:
- 0, 0
 
- --angle-hampel-sig <angle_hampel_sig>
- Angle filter sig - Default:
- 3
 
- --angle-hampel-span <angle_hampel_span>
- Angle filter span - Default:
- 0
 
- --centroid-hampel-sig <centroid_hampel_sig>
- Hampel filter sig - Default:
- 3
 
- --centroid-hampel-span <centroid_hampel_span>
- Hampel filter span - Default:
- 0
 
- --pixel-format <pixel_format>
- Pixel format for reading in .avi and .mkv videos - Default:
- gray16le
 
- --movie-dtype <movie_dtype>
- Data type for raw frames read in for extraction - Default:
- <i2
 
- --frame-dtype <frame_dtype>
- Data type for processed frames - Default:
- uint8
- Options:
- uint8 | uint16 
 
- --write-movie <write_movie>
- Write a results output movie including an extracted mouse - Default:
- True
 
- --chunk-overlap <chunk_overlap>
- Frames overlapped in each chunk. Useful for cable tracking - Default:
- 0
 
- -t, --temporal-filter-size <temporal_filter_size>
- Time prefilter kernel (median filter, must be odd) - Default:
- 0
 
- -s, --spatial-filter-size <spatial_filter_size>
- Space prefilter kernel (median filter, must be odd) - Default:
- 3
 
- --tail-filter-shape <tail_filter_shape>
- Tail filter shape - Default:
- ellipse
 
- --tail-filter-size <tail_filter_size>
- Tail filter size - Default:
- 9, 9
 
- --tail-filter-iters <tail_filter_iters>
- Number of tail filter iterations - Default:
- 1
 
- --cable-filter-size <cable_filter_size>
- Cable filter size (in pixels) - Default:
- 5, 5
 
- --cable-filter-shape <cable_filter_shape>
- Cable filter shape (rectangle or ellipse) - Default:
- rectangle
 
- --cable-filter-iters <cable_filter_iters>
- Number of cable filter iterations - Default:
- 0
 
- --tracking-model-init <tracking_model_init>
- Method for tracking model initialization - Default:
- raw
 
- --tracking-model-segment <tracking_model_segment>
- Segment likelihood mask from tracking model - Default:
- True
 
- --tracking-model-ll-clip <tracking_model_ll_clip>
- Clip log-likelihoods below this value - Default:
- -100
 
- --tracking-model-mask-threshold <tracking_model_mask_threshold>
- Threshold on log-likelihood to include pixels for centroid and angle calculation - Default:
- -16
 
- --tracking-model-ll-threshold <tracking_model_ll_threshold>
- Threshold on log-likelihood for pixels to use for update during tracking - Default:
- -100
 
- --use-tracking-model <use_tracking_model>
- Use an expectation-maximization style model to aid mouse tracking. Useful for data with cables - Default:
- False
 
- --use-cc <use_cc>
- Extract features using largest connected components. - Default:
- True
 
- --widen-radius <widen_radius>
- Number of pixels to increase/decrease radius by when graduating bucket walls. - Default:
- 0
 
- --graduate-walls <graduate_walls>
- Graduates and dilates the background image to compensate for slanted bucket walls. _/ - Default:
- False
 
- --flip-classifier-smoothing <flip_classifier_smoothing>
- Number of frames to smooth flip classifier probabilities - Default:
- 51
 
- --flip-classifier <flip_classifier>
- path to the flip classifier used to properly orient the mouse (.pkl file) 
- --compute-raw-scalars
- Compute scalar values from raw cropped frames. - Default:
- False
 
- --detected-true-depth <detected_true_depth>
- Option to override automatic depth estimation during extraction. This is only a debugging parameter, for cases where dilate_iterations > 1, otherwise has no effect. Either “auto” or an int value. - Default:
- auto
 
- --max-height <max_height>
- Max mouse height threshold from floor (mm) - Default:
- 120
 
- --min-height <min_height>
- Min mouse height threshold from floor (mm) - Default:
- 10
 
- -n, --num-frames <num_frames>
- Number of frames to extract. Will extract full session if set to None. 
- -c, --crop-size <crop_size>
- Width and height of cropped mouse image - Default:
- 80, 80
 
- --extensions <extensions>
- File extension of raw data - Default:
- .dat
 
- --skip-checks
- Flag: skip checks for the existance of a metadata file - Default:
- False
 
- --extract-out-script <extract_out_script>
- Name of bash script file to save extract commands. - Default:
- extract_out.sh
 
- --cluster-type <cluster_type>
- Platform to train models on - Default:
- local
- Options:
- local | slurm 
 
- --prefix <prefix>
- Batch command string to prefix model training command (slurm only). - Default:
 
- -c, --ncpus <ncpus>
- Number of cores to use in extraction - Default:
- 1
 
- --memory <memory>
- RAM (slurm only) - Default:
- 5GB
 
- --wall-time <wall_time>
- Wall time (slurm only) - Default:
- 3:00:00
 
- --partition <partition>
- Partition name (slurm only) - Default:
- short
 
- --get-cmd
- Print scan command strings. - Default:
- True
 
- --run-cmd
- Run scan command strings. - Default:
- False
 
Arguments
- INPUT_FOLDER
- Required argument 
convert-raw-to-avi
Loss less compresses a raw depth file (dat) into an avi file that is 8x smaller.
moseq2-extract convert-raw-to-avi [OPTIONS] INPUT_FILE
Options
- -m, --mapping <mapping>
- Ffprobe stream selection variable. Default: DEPTH - Default:
- DEPTH
 
- -t, --threads <threads>
- Number of threads for encoding - Default:
- 8
 
- --delete
- Delete raw file if encoding is sucessful - Default:
- False
 
- --fps <fps>
- Video FPS - Default:
- 30
 
- -b, --chunk-size <chunk_size>
- Chunk size - Default:
- 3000
 
- -o, --output-file <output_file>
- Path to output file 
Arguments
- INPUT_FILE
- Required argument 
copy-slice
Copies a segment of an input depth recording into a new video file.
moseq2-extract copy-slice [OPTIONS] INPUT_FILE
Options
- -m, --mapping <mapping>
- Ffprobe stream selection variable. Default: DEPTH - Default:
- DEPTH
 
- -t, --threads <threads>
- Number of threads for encoding - Default:
- 8
 
- --delete
- Delete raw file if encoding is sucessful - Default:
- False
 
- --fps <fps>
- Video FPS - Default:
- 30
 
- -b, --chunk-size <chunk_size>
- Chunk size - Default:
- 3000
 
- -o, --output-file <output_file>
- Path to output file 
- -c, --copy-slice <copy_slice>
- Slice indices used for copy - Default:
- 0, 1000
 
Arguments
- INPUT_FILE
- Required argument 
download-flip-file
Downloads Flip-correction model that helps with orienting the mouse during extraction.
moseq2-extract download-flip-file [OPTIONS] [CONFIG_FILE]
Options
- --output-dir <output_dir>
- Output directory for downloaded flip flie - Default:
- /home/wingillis/dev/moseq/moseq2-extract/docs
 
Arguments
- CONFIG_FILE
- Optional argument 
extract
Processes raw input depth recordings to output a cropped and orientedvideo of the mouse and saves the output+metadata to h5 files in the given output directory.
moseq2-extract extract [OPTIONS] INPUT_FILE
Options
- --cluster-type <cluster_type>
- Platform to train models on - Default:
- local
- Options:
- local | slurm 
 
- -p, --progress-bar
- Show verbose progress bars. - Default:
- False
 
- --config-file <config_file>
- --recompute-bg <recompute_bg>
- Overwrite previously computed background image - Default:
- False
 
- --use-plane-bground
- Use a plane fit for the background. Useful when mice don’t move much - Default:
- False
 
- --output-dir <output_dir>
- Output directory to save the results h5 file - Default:
- proc
 
- --noise-tolerance <noise_tolerance>
- Extent of noise to accept during RANSAC Plane ROI computation. - Default:
- 30
 
- --erode-iterations <erode_iterations>
- Number of erosion iterations to decrease bucket floor size. - Default:
- 0
 
- --bg-roi-erode <bg_roi_erode>
- Size of cv2 Structure Element to erode roi. - Default:
- 1, 1
 
- --dilate-iterations <dilate_iterations>
- Number of dilation iterations to increase bucket floor size. - Default:
- 1
 
- --bg-sort-roi-by-position-max-rois <bg_sort_roi_by_position_max_rois>
- The number of maximum ROIs sorted by area - Default:
- 2
 
- --bg-sort-roi-by-position <bg_sort_roi_by_position>
- Sort ROIs by position - Default:
- False
 
- --bg-roi-fill-holes <bg_roi_fill_holes>
- Fill holes in ROI - Default:
- True
 
- --bg-roi-gradient-kernel <bg_roi_gradient_kernel>
- Kernel size for Sobel gradient filtering - Default:
- 7
 
- --bg-roi-gradient-threshold <bg_roi_gradient_threshold>
- Gradient must be less than threshold to include points - Default:
- 3000
 
- --bg-roi-gradient-filter <bg_roi_gradient_filter>
- Use graident filter to exclude walls for detected ROI - Default:
- False
 
- --bg-roi-depth-range <bg_roi_depth_range>
- Range to search for floor of arena (in mm) - Default:
- 650, 750
 
- --manual-set-depth-range
- Flag to deactivate auto depth range setting. - Default:
- False
 
- --camera-type <camera_type>
- Camera type used for recording for auto-sets bg-roi-weights to precomputed values for different camera types. Possible types: [“kinect”, “azure”, “realsense”] - Default:
- auto
- Options:
- auto | kinect | azure | realsense 
 
- --bg-roi-weights <bg_roi_weights>
- ROI feature weighting (area, extent, dist to center) - Default:
- 1, 0.1, 1
 
- --bg-roi-index <bg_roi_index>
- Index of which detected ROI mask to use - Default:
- 0
 
- --bg-roi-shape <bg_roi_shape>
- Shape to use to detect roi (ellipse or rect) - Default:
- ellipse
 
- --bg-roi-dilate <bg_roi_dilate>
- Size of StructuringElement to dilate roi - Default:
- 10, 10
 
- -m, --mapping <mapping>
- Ffprobe stream selection variable. Default: DEPTH - Default:
- DEPTH
 
- -t, --threads <threads>
- Number of threads for encoding - Default:
- 8
 
- --delete
- Delete raw file if encoding is sucessful - Default:
- False
 
- --fps <fps>
- Video FPS - Default:
- 30
 
- -b, --chunk-size <chunk_size>
- Chunk size - Default:
- 3000
 
- -o, --output-file <output_file>
- Path to output file 
- --skip-completed
- Will skip the extraction if it is already completed. - Default:
- False
 
- --compress-threads <compress_threads>
- Number of threads for encoding - Default:
- 3
 
- --compress-chunk-size <compress_chunk_size>
- Chunk size for .avi compression - Default:
- 3000
 
- --compress <compress>
- Convert .dat to .avi after successful extraction - Default:
- False
 
- --frame-trim <frame_trim>
- Frames to trim from beginning and end of data - Default:
- 0, 0
 
- --model-smoothing-clips <model_smoothing_clips>
- Model smoothing clips - Default:
- 0, 0
 
- --angle-hampel-sig <angle_hampel_sig>
- Angle filter sig - Default:
- 3
 
- --angle-hampel-span <angle_hampel_span>
- Angle filter span - Default:
- 0
 
- --centroid-hampel-sig <centroid_hampel_sig>
- Hampel filter sig - Default:
- 3
 
- --centroid-hampel-span <centroid_hampel_span>
- Hampel filter span - Default:
- 0
 
- --pixel-format <pixel_format>
- Pixel format for reading in .avi and .mkv videos - Default:
- gray16le
 
- --movie-dtype <movie_dtype>
- Data type for raw frames read in for extraction - Default:
- <i2
 
- --frame-dtype <frame_dtype>
- Data type for processed frames - Default:
- uint8
- Options:
- uint8 | uint16 
 
- --write-movie <write_movie>
- Write a results output movie including an extracted mouse - Default:
- True
 
- --chunk-overlap <chunk_overlap>
- Frames overlapped in each chunk. Useful for cable tracking - Default:
- 0
 
- -t, --temporal-filter-size <temporal_filter_size>
- Time prefilter kernel (median filter, must be odd) - Default:
- 0
 
- -s, --spatial-filter-size <spatial_filter_size>
- Space prefilter kernel (median filter, must be odd) - Default:
- 3
 
- --tail-filter-shape <tail_filter_shape>
- Tail filter shape - Default:
- ellipse
 
- --tail-filter-size <tail_filter_size>
- Tail filter size - Default:
- 9, 9
 
- --tail-filter-iters <tail_filter_iters>
- Number of tail filter iterations - Default:
- 1
 
- --cable-filter-size <cable_filter_size>
- Cable filter size (in pixels) - Default:
- 5, 5
 
- --cable-filter-shape <cable_filter_shape>
- Cable filter shape (rectangle or ellipse) - Default:
- rectangle
 
- --cable-filter-iters <cable_filter_iters>
- Number of cable filter iterations - Default:
- 0
 
- --tracking-model-init <tracking_model_init>
- Method for tracking model initialization - Default:
- raw
 
- --tracking-model-segment <tracking_model_segment>
- Segment likelihood mask from tracking model - Default:
- True
 
- --tracking-model-ll-clip <tracking_model_ll_clip>
- Clip log-likelihoods below this value - Default:
- -100
 
- --tracking-model-mask-threshold <tracking_model_mask_threshold>
- Threshold on log-likelihood to include pixels for centroid and angle calculation - Default:
- -16
 
- --tracking-model-ll-threshold <tracking_model_ll_threshold>
- Threshold on log-likelihood for pixels to use for update during tracking - Default:
- -100
 
- --use-tracking-model <use_tracking_model>
- Use an expectation-maximization style model to aid mouse tracking. Useful for data with cables - Default:
- False
 
- --use-cc <use_cc>
- Extract features using largest connected components. - Default:
- True
 
- --widen-radius <widen_radius>
- Number of pixels to increase/decrease radius by when graduating bucket walls. - Default:
- 0
 
- --graduate-walls <graduate_walls>
- Graduates and dilates the background image to compensate for slanted bucket walls. _/ - Default:
- False
 
- --flip-classifier-smoothing <flip_classifier_smoothing>
- Number of frames to smooth flip classifier probabilities - Default:
- 51
 
- --flip-classifier <flip_classifier>
- path to the flip classifier used to properly orient the mouse (.pkl file) 
- --compute-raw-scalars
- Compute scalar values from raw cropped frames. - Default:
- False
 
- --detected-true-depth <detected_true_depth>
- Option to override automatic depth estimation during extraction. This is only a debugging parameter, for cases where dilate_iterations > 1, otherwise has no effect. Either “auto” or an int value. - Default:
- auto
 
- --max-height <max_height>
- Max mouse height threshold from floor (mm) - Default:
- 120
 
- --min-height <min_height>
- Min mouse height threshold from floor (mm) - Default:
- 10
 
- -n, --num-frames <num_frames>
- Number of frames to extract. Will extract full session if set to None. 
- -c, --crop-size <crop_size>
- Width and height of cropped mouse image - Default:
- 80, 80
 
Arguments
- INPUT_FILE
- Required argument 
find-roi
Finds the ROI (the arena) and background to subtract from frames when extracting.
moseq2-extract find-roi [OPTIONS] INPUT_FILE
Options
- -p, --progress-bar
- Show verbose progress bars. - Default:
- False
 
- --config-file <config_file>
- --recompute-bg <recompute_bg>
- Overwrite previously computed background image - Default:
- False
 
- --use-plane-bground
- Use a plane fit for the background. Useful when mice don’t move much - Default:
- False
 
- --output-dir <output_dir>
- Output directory to save the results h5 file - Default:
- proc
 
- --noise-tolerance <noise_tolerance>
- Extent of noise to accept during RANSAC Plane ROI computation. - Default:
- 30
 
- --erode-iterations <erode_iterations>
- Number of erosion iterations to decrease bucket floor size. - Default:
- 0
 
- --bg-roi-erode <bg_roi_erode>
- Size of cv2 Structure Element to erode roi. - Default:
- 1, 1
 
- --dilate-iterations <dilate_iterations>
- Number of dilation iterations to increase bucket floor size. - Default:
- 1
 
- --bg-sort-roi-by-position-max-rois <bg_sort_roi_by_position_max_rois>
- The number of maximum ROIs sorted by area - Default:
- 2
 
- --bg-sort-roi-by-position <bg_sort_roi_by_position>
- Sort ROIs by position - Default:
- False
 
- --bg-roi-fill-holes <bg_roi_fill_holes>
- Fill holes in ROI - Default:
- True
 
- --bg-roi-gradient-kernel <bg_roi_gradient_kernel>
- Kernel size for Sobel gradient filtering - Default:
- 7
 
- --bg-roi-gradient-threshold <bg_roi_gradient_threshold>
- Gradient must be less than threshold to include points - Default:
- 3000
 
- --bg-roi-gradient-filter <bg_roi_gradient_filter>
- Use graident filter to exclude walls for detected ROI - Default:
- False
 
- --bg-roi-depth-range <bg_roi_depth_range>
- Range to search for floor of arena (in mm) - Default:
- 650, 750
 
- --manual-set-depth-range
- Flag to deactivate auto depth range setting. - Default:
- False
 
- --camera-type <camera_type>
- Camera type used for recording for auto-sets bg-roi-weights to precomputed values for different camera types. Possible types: [“kinect”, “azure”, “realsense”] - Default:
- auto
- Options:
- auto | kinect | azure | realsense 
 
- --bg-roi-weights <bg_roi_weights>
- ROI feature weighting (area, extent, dist to center) - Default:
- 1, 0.1, 1
 
- --bg-roi-index <bg_roi_index>
- Index of which detected ROI mask to use - Default:
- 0
 
- --bg-roi-shape <bg_roi_shape>
- Shape to use to detect roi (ellipse or rect) - Default:
- ellipse
 
- --bg-roi-dilate <bg_roi_dilate>
- Size of StructuringElement to dilate roi - Default:
- 10, 10
 
Arguments
- INPUT_FILE
- Required argument 
generate-config
Generates a configuration file (config.yaml) that holds editable options for extraction parameters.
moseq2-extract generate-config [OPTIONS]
Options
- -o, --output-file <output_file>
- Default:
- config.yaml
 
- --camera-type <camera_type>
- specify the camera type (k2 or azure), default is k2 - Default:
- k2
 
generate-index
Generates an index file (moseq2-index.yaml) that contains all extracted session metadata.
moseq2-extract generate-index [OPTIONS]
Options
- -i, --input-dir <input_dir>
- Directory to find h5 files - Default:
- /home/wingillis/dev/moseq/moseq2-extract/docs
 
- -o, --output-file <output_file>
- Location for storing index - Default:
- /home/wingillis/dev/moseq/moseq2-extract/docs/moseq2-index.yaml
 
GUI Module
GUI front-end operations accessible from a jupyter notebook.
- moseq2_extract.gui.download_flip_command(output_dir, config_file='', selection=1)
- Download flip classifier and saves its path to config file (config.yaml) - Args: output_dir (str): path to output directory to save flip classifier config_file (str): path to config file (config.yaml) selection (int): index of which flip file to download (default is Adult male C57 classifer) - Returns: 
- moseq2_extract.gui.generate_index_command(input_dir, output_file)
- Generate Index File (moseq2-index.yaml) based on aggregated sessions - Args: input_dir (str): path to folder with aggregated results output_file (str): path to index file - Returns: output_file (str): path to index file. 
- moseq2_extract.gui.get_selected_sessions(to_extract, extract_all)
- Return either selected sessions to extract, or all the sessions given user input, the function will - Args: to_extract (list): list of paths to sessions to extract extract_all (bool): boolean to include all sessions and skip user-input prompt. - Returns: to_extract (list): new list of selected sessions to extract. 
General Utilities Module
General utility functions throughout the extract package.
- moseq2_extract.util.build_path(keys: dict, format_string: str, snake_case=True) str
- Produce a new file name using keys collected from extraction h5 files. - Args: keys (dict): dictionary specifying which keys used to produce the new file name format_string (str): the string to reformat using the keys dictionary i.e. ‘{subject_name}_{session_name}’. snake_case (bool): flag to save the files with snake_case - Returns: out (str): a newly formatted filename useable with any operating system 
- moseq2_extract.util.camel_to_snake(s)
- Convert CamelCase to snake_case - Args: s (str): CamelCase string to convert to snake_case. - Returns: (str): string in snake_case 
- moseq2_extract.util.check_filter_sizes(config_data)
- Ensure spatial and temporal filter kernel sizes are odd numbers. - Args: config_data (dict): a dictionary holding all extraction parameters - Returns: config_data (dict): Updated configuration dict 
- moseq2_extract.util.clean_dict(dct)
- Standardize types of dict value. - Args: dct (dict): dict object with mixed type value objects. - Returns: out (dict): dict object with list value objects. 
- moseq2_extract.util.clean_file_str(file_str: str, replace_with: str = '-') str
- Removes invalid characters for a file name from a string. - Args: file_str (str): filename substring to replace replace_with (str): value to replace str with - Returns: out (str): cleaned file string 
- moseq2_extract.util.click_param_annot(click_cmd)
- Return a dict that maps option names to help strings from a click.Command instance. - Args: click_cmd (click.Command): command to annotate - Returns: annotations (dict): dictionary of options and their help messages 
- moseq2_extract.util.command_with_config(config_file_param_name)
- Override default CLI variables with the values contained within the config.yaml being passed. - Args: config_file_param_name (str): path to config file. - Returns: custom_command_class (function): decorator function to update click.Command parameters with the config_file parameter values. 
- moseq2_extract.util.convert_pxs_to_mm(coords, resolution=(512, 424), field_of_view=(70.6, 60), true_depth=673.1)
- Converts x, y coordinates in pixel space to mm. - Args: coords (list): list of x,y pixel coordinates resolution (tuple): image dimensions field_of_view (tuple): width and height scaling params true_depth (float): detected true depth - Returns: new_coords (list): x,y coordinates in mm 
- moseq2_extract.util.convert_raw_to_avi_function(input_file, chunk_size=2000, fps=30, delete=False, threads=3)
- Compress depth file (.dat, ‘.mkv’) to avi file. - Args: input_file (str): path to depth file chunk_size (int): size of chunks to process at a time fps (int): frames per second delete (bool): flag for deleting original depth file threads (int): number of threads to write video. 
- moseq2_extract.util.detect_and_set_camera_parameters(config_data, input_file=None)
- Read the camera type and info and set the bg_roi_weights to the precomputed values. If camera_type is None, function will assume kinect is used. - Args: config_data (dict): dictionary containing all input parameters. input_file (str): path to raw depth file - Returns: config_data (dict): updated dictionary with bg-roi-weights to use for extraction. 
- moseq2_extract.util.detect_avi_file(finfo)
- Detect the camera type by comparing the read video resolution with known
- outputted dimensions of different camera types. 
 - Args: finfo (dict): dictionary containing the file metadata, - Returns: detected (str): name of the detected camera type. 
- moseq2_extract.util.dict_to_h5(h5, dic, root='/', annotations=None)
- Save an dict to an h5 file, mounting at root. Keys are mapped to group names recursively. - Args: h5 (h5py.File instance): h5py.file object to operate on dic (dict): dictionary of data to write root (string): group on which to add additional groups and datasets annotations (dict): annotation data to add to corresponding h5 datasets. Should contain same keys as dic. 
- moseq2_extract.util.escape_path(path)
- Return a path to return to original base directory. - Args: path (str): path to current working dir - Returns: path (str): path to original base_dir 
- moseq2_extract.util.filter_warnings(func)
- Applies warnings.simplefilter() to ignore warnings when
- running the main gui functionaity in a Jupyter Notebook. The function will filter out: yaml.error.UnsafeLoaderWarning, FutureWarning and UserWarning. 
 - Args: func (function): function to silence enclosed warnings. - Returns: apply_warning_filters (func): Returns passed function after warnings filtering is completed. 
- moseq2_extract.util.gen_batch_sequence(nframes, chunk_size, overlap, offset=0)
- Generates batches used to chunk videos prior to extraction. - Args: nframes (int): total number of frames chunk_size (int): the number of desired chunk size overlap (int): number of overlapping frames offset (int): frame offset - Returns: out (list): the list of batches 
- moseq2_extract.util.generate_missing_metadata(sess_dir, sess_name)
- Generate metadata.json with default avlues for session that does not already include one. - Args: sess_dir (str): Path to session directory to create metadata.json file in. sess_name (str): Session Name to set the metadata SessionName. - Returns: 
- moseq2_extract.util.get_bucket_center(img, true_depth, threshold=650)
- Find Centroid coordinates of circular bucket. - Args: img (np.ndaarray): original background image. true_depth (float): distance value from camera to bucket floor (automatically pre-computed) threshold (float): distance values to accept region into detected circle. (used to reduce fall noise interference) - Returns: cX (int): x-coordinate of circle centroid cY (int): y-coordinate of circle centroid 
- moseq2_extract.util.get_frame_range_indices(trim_beginning, trim_ending, nframes)
- Compute the total number of frames to be extracted, and find the start and end indices. - Args: trim_beginning (int): number of frames to remove from beginning of recording trim_ending (int): number of frames to remove from ending of recording nframes (int): total number of requested frames to extract - Returns: nframes (int): total number of frames to extract first_frame_idx (int): index of the frame to begin extraction from last_frame_idx (int): index of the last frame in the extraction 
- moseq2_extract.util.get_strels(config_data)
- Get dictionary object of cv2 StructuringElements for image filtering given a dict of configurations parameters. - Args: config_data (dict): dict containing cv2 Structuring Element parameters - Returns: str_els (dict): dict containing cv2 StructuringElements used for image filtering 
- moseq2_extract.util.graduate_dilated_wall_area(bground_im, config_data, strel_dilate, output_dir)
- Creates a gradient to represent the dilated (now visible) bucket wall regions. Only is used if background is dilated to capture larger rodents in convex shaped buckets (_/). - Args: bground_im (np.ndarray): the computed background image. config_data (dict): dictionary containing helper user configuration parameters. strel_dilate (cv2.structuringElement): dilation structuring element used to dilate background image. output_dir (str): path to save newly computed background to use. - Returns: bground_im (np.ndarray): the new background image with a gradient around the floor from high to low depth values. 
- moseq2_extract.util.h5_to_dict(h5file, path) dict
- Load h5 contents to dictionary object. - Args: h5file (str or h5py.File): file path to the given h5 file or the h5 file handle path (str): path to the base dataset within the h5 file - Returns: out (dict): a dict with h5 file contents with the same path structure 
- moseq2_extract.util.load_found_session_paths(input_dir, exts)
- Find all depth files with the specified extension recursively in input directory. - Args: input_dir (str): path to project base directory holding all the session sub-folders. exts (list or str): list of extensions to search for, or a single extension in string form. - Returns: files (list): sorted list of all paths to found depth files 
- moseq2_extract.util.load_metadata(metadata_file)
- Load metadata from session metadata.json file. - Args: metadata_file (str): path to metadata file - Returns: metadata (dict): metadata dictionary of JSON contents 
- moseq2_extract.util.load_textdata(data_file, dtype=<class 'numpy.float32'>)
- Loads timestamp from txt/csv file. - Args: data_file (str): path to timestamp file dtype (dtype): data type of timestamps - Returns: data (np.ndarray): timestamp data timestamps (numpy.array): the array for the timestamps 
- moseq2_extract.util.load_timestamps(timestamp_file, col=0, alternate=False)
- Read timestamps from space delimited text file for timestamps. - Args: timestamp_file (str): path to timestamp file col (int): column in ts file read. alternate (boolean): specified if timestamps were saved in a csv file. False means txt file and True means csv file. - Returns: ts (1D array): list of timestamps 
- moseq2_extract.util.make_gradient(width, height, h, k, a, b, theta=0)
- Create gradient around bucket floor representing slanted wall values. - Args: width (int): bounding box width height (int) bounding box height h (int): centroid x coordinate k (int): centroid y coordinate a (int): x-radius of drawn ellipse b (int): y-radius of drawn ellipse theta (float): degree to rotate ellipse in radians. (has no effect if drawing a circle) - Returns: np.ndarray: numpy array with weighted values from 0.08 -> 0.8 representing the proportion of values to create a gradient from. 0.8 being the proportioned values closest to the circle wall. 
- moseq2_extract.util.mouse_threshold_filter(h5file, thresh=0)
- Filter frames in h5 files by threshold value. - Args: h5file (str): path to h5 file thresh (int): threshold at which to apply filter - Returns: (3d-np boolean array): array of regions to include after threshold filter. 
- moseq2_extract.util.read_yaml(yaml_file)
- Read yaml file into a dictionary - Args: yaml_file (str): path to yaml file - Returns: return_dict (dict): dict of yaml contents 
- moseq2_extract.util.recursive_find_h5s(root_dir='/home/wingillis/dev/moseq/moseq2-extract/docs', ext='.h5', yaml_string='{}.yaml')
- Recursively find h5 files, along with yaml files with the same basename - Args: root_dir (str): path to base directory to begin recursive search in. ext (str): extension to search for yaml_string (str): string for filename formatting when saving data - Returns: h5s (list): list of found h5 files dicts (list): list of found metadata files yamls (list): list of found yaml files 
- moseq2_extract.util.recursive_find_unextracted_dirs(root_dir='/home/wingillis/dev/moseq/moseq2-extract/docs', session_pattern='session_\\d+\\.(?:tgz|tar\\.gz)', extension='.dat', yaml_path='proc/results_00.yaml', metadata_path='metadata.json', skip_checks=False)
- Recursively find unextracted (or incompletely extracted) directories - Args: root_dir (str): path to base directory to start recursive search for unextracted folders. session_pattern (str): folder name pattern to search for extension (str): file extension to search for yaml_path (str): path to respective extracted metadata metadata_path (str): path to relative metadata.json files skip_checks (bool): indicates whether to check if the files exist at the given relative paths - Returns: proc_dirs (1d-list): list of paths to each unextracted session’s proc/ directory 
- moseq2_extract.util.scalar_attributes()
- Gets scalar attributes dict with names paired with descriptions. - Returns: attributes (dict): a dictionary of metadata keys and descriptions. 
- moseq2_extract.util.select_strel(string='e', size=(10, 10))
- Returns structuring element of specified shape. - Args: string (str): string to indicate whether to use ellipse or rectangle size (tuple): size of structuring element - Returns: strel (cv2.StructuringElement): selected cv2 StructuringElement to use in video filtering or ROI dilation/erosion. 
- moseq2_extract.util.set_bground_to_plane_fit(bground_im, plane, output_dir)
- Replaces median-computed background image with plane fit. Only occurs if config_data[‘use_plane_bground’] == True. - Args: bground_im (numpy.ndarray): Background image computed via median value in each pixel of depth video. plane (numpy.ndarray): Computed ROI Plane using RANSAC. output_dir (str): Path to write updated background image to. - Returns: bground_im (numpy.ndarray): The background image. 
- moseq2_extract.util.strided_app(a, L, S)
- Create subarrays of an array with a given stride and window length. - Args: a (np.ndarray) - original array L (int) - Window Length S (int) - Stride size - Returns: (np.ndarray) - array of subarrays 
- moseq2_extract.util.time_str_for_filename(time_str: str) str
- Process the timestamp to be used in the filename. - Args: time_str (str): time str to format - Returns: out (str): formatted timestamp str