code: def test_single_perplexity_produces_same_result_as_perplexity_based_nn(
      self,
  ):
      for perplexity in [5, 30, 50, 100]:
          ms1 = MultiscaleMixture(self.x, perplexities=[perplexity])
          ms2 = Multiscale(self.x, perplexities=[perplexity])
          perp = PerplexityBasedNN(self.x, perplexity=perplexity)
  
          # 1e-14 instead of 1e-16: It looks like a machine precision issue
          # There are no noticeable differences between the matrices
          self.assertAlmostEqual(
              np.sum(ms1.P - perp.P),
              0,
              delta=1e-14,
              msg=f"perplexity={perplexity}",
          )
          self.assertAlmostEqual(
              np.sum(ms2.P - perp.P),
              0,
              delta=1e-14,
              msg=f"perplexity={perplexity}",
          )
  
imports: import logging
  import unittest
  from functools import partial
  import numpy
  from scipy.spatial.distance import squareform, pdist
  from sklearn import datasets
  from sklearn.model_selection import train_test_split
  from openTSNE import affinity, nearest_neighbors
label_desc: Use image node_id 5 for calling the TestMultiscale obj's underlying member method code with example usage: obj.test_single_perplexity_produces_same_result_as_perplexity_based_nn() without return types