code: def test_estimate_latent_py_method():
      for py_method in ["cnt", "eqn", "marginal"]:
          py, nm, inv = count.estimate_latent(
              confident_joint=data["cj"],
              labels=data["labels"],
              py_method=py_method,
          )
          assert sum(py) - 1 < 1e-4
      try:
          py, nm, inv = count.estimate_latent(
              confident_joint=data["cj"],
              labels=data["labels"],
              py_method="INVALID",
          )
      except ValueError as e:
          assert "should be" in str(e)
          with pytest.raises(ValueError) as e:
              py, nm, inv = count.estimate_latent(
                  confident_joint=data["cj"],
                  labels=data["labels"],
                  py_method="INVALID",
              )
  
imports: import cleanlab.multilabel_classification.dataset
  from cleanlab import count, filter
  from cleanlab.count import get_confident_thresholds, estimate_py_and_noise_matrices_from_probabilities
  from cleanlab.internal.latent_algebra import compute_inv_noise_matrix
  from cleanlab.benchmarking.noise_generation import generate_noise_matrix_from_trace
  from cleanlab.benchmarking.noise_generation import generate_noisy_labels
  from cleanlab.internal.util import value_counts
  from cleanlab.internal.multilabel_utils import int2onehot
  from cleanlab.experimental.label_issues_batched import find_label_issues_batched
  import numpy
  import scipy
  import pytest
  from sklearn.multioutput import MultiOutputClassifier
  from sklearn.linear_model import LogisticRegression
  from sklearn.model_selection import cross_val_predict
  from tempfile import mkdtemp
  import os.path
label_desc: Use image node_id 13 for calling a global function with example usage: test_estimate_latent_py_method() without return types