def get_mAP(self, precision, recall):
        """ Get mAP from precision.
        Parameters
        ----------
        precision: np.ndarray
            Numpy array of precision curves at different recalls, of shape
            [num_classes, num_difficulties, num_overlap_thresholds,self.sample_points]

        recall: np.ndarray
            Numpy array of recall values corresponding to each precision, of shape
            [num_classes, num_difficulties, num_overlap_thresholds,self.sample_points]

        Returns
        -------
        ap: np.ndarray
            Numpy array of mean AP evaluated at different points along PR curve.
            Shape [num_classes, num_difficulties, num_overlap_thresholds]
        """
        precisions, recall_spacing = self.get_sampled_precision_recall(precision, recall)
        ap = sum(precisions) / len(recall_spacing)
        return ap
 Get mAP from precision.
        Parameters
        ----------
        precision: np.ndarray
            Numpy array of precision curves at different recalls, of shape
            [num_classes, num_difficulties, num_overlap_thresholds,self.sample_points]

        recall: np.ndarray
            Numpy array of recall values corresponding to each precision, of shape
            [num_classes, num_difficulties, num_overlap_thresholds,self.sample_points]

        Returns
        -------
        ap: np.ndarray
            Numpy array of mean AP evaluated at different points along PR curve.
            Shape [num_classes, num_difficulties, num_overlap_thresholds]
        
tridet/evaluators/kitti_3d_evaluator.py