code: def test_label_quality_scores_multiannotator_ensemble():
      labels = ensemble_data["labels"]
      pred_probs = ensemble_data["pred_probs"]
  
      multiannotator_dict = get_label_quality_multiannotator_ensemble(
          labels, pred_probs, return_weights=True
      )
      assert isinstance(multiannotator_dict, dict)
      assert len(multiannotator_dict) == 5
      assert isinstance(
          multiannotator_dict["label_quality"], pd.DataFrame
      )
      assert isinstance(
          multiannotator_dict["annotator_stats"], pd.DataFrame
      )
      assert isinstance(
          multiannotator_dict["detailed_label_quality"], pd.DataFrame
      )
      assert isinstance(multiannotator_dict["model_weight"], np.ndarray)
      assert isinstance(
          multiannotator_dict["annotator_weight"], np.ndarray
      )
  
      # test non-numeric annotator names
      labels_string_names = labels.add_prefix("anno_")
      multiannotator_dict = get_label_quality_multiannotator_ensemble(
          labels_string_names, pred_probs, return_detailed_quality=False
      )
  
      # test return model and annotator weights
      multiannotator_dict = get_label_quality_multiannotator_ensemble(
          labels, pred_probs, return_weights=True
      )
      assert len(multiannotator_dict) == 5
      assert isinstance(multiannotator_dict["model_weight"], np.ndarray)
      assert isinstance(
          multiannotator_dict["annotator_weight"], np.ndarray
      )
  
      # test numpy arrays and calibrationg
      multiannotator_dict = get_label_quality_multiannotator_ensemble(
          np.array(labels), pred_probs, calibrate_probs=True
      )
  
      # testing tiebreaks in ensemble
      labels_tiebreaks = np.array(
          [
              [1, 2, 0],
              [1, 1, 0],
              [1, 0, 0],
              [2, 2, 2],
              [1, 2, 0],
              [1, 2, 0],
          ]
      )
      pred_probs_tiebreaks = np.array(
          [
              [0.4, 0.4, 0.2],
              [0.3, 0.6, 0.1],
              [0.75, 0.2, 0.05],
              [0.1, 0.4, 0.5],
              [0.2, 0.4, 0.4],
              [0.2, 0.4, 0.4],
          ]
      )
      pred_probs_tiebreaks_ensemble = np.array(
          [
              pred_probs_tiebreaks,
              pred_probs_tiebreaks,
              pred_probs_tiebreaks,
          ]
      )
  
      consensus_label = get_label_quality_multiannotator_ensemble(
          labels_tiebreaks, pred_probs_tiebreaks_ensemble
      )
  
      # test error when using wrong function
      try:
          multiannotator_dict = (
              get_label_quality_multiannotator_ensemble(
                  labels, pred_probs[0], return_weights=True
              )
          )
      except ValueError as e:
          assert "use the non-ensemble version of this function" in str(
              e
          )
  
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 6 for calling a global function with example usage: test_label_quality_scores_multiannotator_ensemble() without return types