Skip to content

JABS Behavior (jabs-behavior)

Prediction Postprocessing

The jabs.behavior.postprocessing module provides tools for refining behavior predictions generated by the JABS framework. It includes classes and functions to manipulate and enhance the quality of behavior event predictions through various postprocessing techniques.

  • BehaviorEvents: Run-length encoding of JABS predictions for efficient behavior event manipulation
  • Postprocessing Stages: Configurable pipeline stages for refining behavior predictions:
  • BoutDurationFilterStage: Remove short behavior bouts below a minimum duration
  • BoutStitchingStage: Combine behavior bouts separated by short gaps
  • GapInterpolationStage: Fill gaps in predictions (NONE labels)
  • PostprocessingPipeline: Sequential application of multiple Stages

Usage

import numpy as np
from jabs.behavior.events import BehaviorEvents, ClassLabels
from jabs.behavior.postprocessing import BoutDurationFilterStage, BoutStitchingStage, PostprocessingPipeline 

# Create behavior events from a prediction vector
predictions = np.array([0, 0, 1, 1, 0, 1, 1, 1, 0])
events = BehaviorEvents.from_vector(predictions)

# Apply postprocessing pipeline
config = {
    BoutStitchingStage.name: {"max_stitch_gap": 2},
    BoutDurationFilterStage.name: {"min_duration": 3},
}
pipeline = PostprocessingPipeline(config)
refined_predictions = pipeline.run(predictions)