code: def test_get_active_learning_scores_ensemble():
      labels = ensemble_data["labels"]
      pred_probs = ensemble_data["pred_probs"]
      labels_unlabeled = ensemble_data["labels_unlabeled"]
      pred_probs_unlabeled = ensemble_data["pred_probs_unlabeled"]
  
      # test default case
      (
          active_learning_scores,
          active_learning_scores_unlabeled,
      ) = get_active_learning_scores_ensemble(
          labels, pred_probs, pred_probs_unlabeled
      )
      assert isinstance(active_learning_scores, np.ndarray)
      assert len(active_learning_scores) == len(labels)
      assert (
          len(active_learning_scores_unlabeled)
          == pred_probs_unlabeled.shape[1]
      )
  
      # test case where all examples are already labeled
      # also tests passing labels as np array
      (
          active_learning_scores,
          active_learning_scores_unlabeled,
      ) = get_active_learning_scores_ensemble(
          np.array(labels), pred_probs
      )
      assert isinstance(active_learning_scores, np.ndarray)
      assert len(active_learning_scores) == len(labels)
      assert len(active_learning_scores_unlabeled) == 0
  
      # test case where only passing unlabeled examples
      (
          active_learning_scores,
          active_learning_scores_unlabeled,
      ) = get_active_learning_scores_ensemble(
          pred_probs_unlabeled=pred_probs_unlabeled
      )
      assert len(active_learning_scores) == 0
      assert len(active_learning_scores_unlabeled) == len(
          labels_unlabeled
      )
  
      # test case where number of classes do not match
      try:
          (
              active_learning_scores,
              active_learning_scores_unlabeled,
          ) = get_active_learning_scores_ensemble(
              labels, pred_probs, pred_probs_unlabeled[:, :-1]
          )
      except ValueError as e:
          assert "must have the same number of classes" in str(e)
  
      # test starting with single labeled example + one unlabeled example
      single_labels = ensemble_data["complete_labels"].iloc[[0]]
      singe_pred_probs = pred_probs[:, [0]]
      singe_pred_probs_unlabeled = pred_probs_unlabeled[:, [0]]
      get_active_learning_scores_ensemble(
          single_labels, singe_pred_probs, singe_pred_probs_unlabeled
      )
  
      # test when each example is only labeled by one annotator
      labels = pd.DataFrame(
          [
              [0, np.NaN, np.NaN],
              [np.NaN, 1, np.NaN],
              [np.NaN, np.NaN, 2],
              [np.NaN, 1, np.NaN],
              [np.NaN, np.NaN, 2],
          ]
      )
      pred_probs = np.random.random((2, 5, 3))
  
      get_active_learning_scores_ensemble(labels, pred_probs)
  
imports: import numpy
  import pytest
  from copy import deepcopy
  from cleanlab.benchmarking.noise_generation import generate_noise_matrix_from_trace
  from cleanlab.benchmarking.noise_generation import generate_noisy_labels
  from cleanlab import count
  from cleanlab.multiannotator import get_label_quality_multiannotator, get_label_quality_multiannotator_ensemble, get_active_learning_scores, get_active_learning_scores_ensemble, get_majority_vote_label, convert_long_to_wide_dataset
  from cleanlab.internal.multiannotator_utils import format_multiannotator_labels
  import pandas
  from sklearn.linear_model import LogisticRegression
label_desc: Use image node_id 8 for calling a global function with example usage: test_get_active_learning_scores_ensemble() without return types