class_docstr: Class for all methodologies implemented to analyze clusters and determine whether they are poisonous.
docstr: Determines whether each data point in the class is in a clean or poisonous cluster
  
  :param clusters: `clusters[i]` indicates which cluster the i'th data point is in.
  :param clean_clusters: List containing the clusters designated as clean.
  :param poison_clusters: List containing the clusters designated as poisonous.
  :return: assigned_clean: `assigned_clean[i]` is a boolean indicating whether the ith data point is clean.
code: def assign_class(
      clusters: np.ndarray,
      clean_clusters: np.ndarray,
      poison_clusters: np.ndarray,
  ) -> np.ndarray:
      """
      Determines whether each data point in the class is in a clean or poisonous cluster
  
      :param clusters: `clusters[i]` indicates which cluster the i'th data point is in.
      :param clean_clusters: List containing the clusters designated as clean.
      :param poison_clusters: List containing the clusters designated as poisonous.
      :return: assigned_clean: `assigned_clean[i]` is a boolean indicating whether the ith data point is clean.
      """
      assigned_clean = np.empty(np.shape(clusters))
      assigned_clean[np.isin(clusters, clean_clusters)] = 1
      assigned_clean[np.isin(clusters, poison_clusters)] = 0
      return assigned_clean
  
file_path: adversarial-robustness-toolbox/art/defences/detector/poison/clustering_analyzer.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Any, Dict, List, Tuple
  import numpy
label_desc: Use image node_id 1 for calling the ClusteringAnalyzer obj's underlying member method code with example usage: obj.assign_class(clusters, clean_clusters, poison_clusters) and returns: assigned_clean