docs: def view_activation_map(self, data_vector=None, data_index=None,
                              activation_map=None, figsize=None,
                              colormap=cm.Spectral_r, colorbar=False,
                              bestmatches=False, bestmatchcolors=None,
                              labels=None, zoom=None, filename=None):
          """Plot the activation map of a given data instance or a new data
          vector
  
          :param data_vector: Optional parameter for a new vector
          :type data_vector: numpy.array
          :param data_index: Optional parameter for the index of the data instance
          :type data_index: int.
          :param activation_map: Optional parameter to pass the an activation map
          :type activation_map: numpy.array
          :param figsize: Optional parameter to specify the size of the figure.
          :type figsize: (int, int)
          :param colormap: Optional parameter to specify the color map to be
                           used.
          :type colormap: matplotlib.colors.Colormap
          :param colorbar: Optional parameter to include a colormap as legend.
          :type colorbar: bool.
          :param bestmatches: Optional parameter to plot best matching units.
          :type bestmatches: bool.
          :param bestmatchcolors: Optional parameter to specify the color of each
                                  best matching unit.
          :type bestmatchcolors: list of int.
          :param labels: Optional parameter to specify the label of each point.
          :type labels: list of str.
          :param zoom: Optional parameter to zoom into a region on the map. The
                       first two coordinates of the tuple are the row limits, the
                       second tuple contains the column limits.
          :type zoom: ((int, int), (int, int))
          :param filename: If specified, the plot will not be shown but saved to
                           this file.
          :type filename: str.
          """
          if data_vector is None and data_index is None:
              raise Exception("Either specify a vector to see its activation "
                              "or give an index of the training data instances")
          if data_vector is not None and data_index is not None:
              raise Exception("You cannot specify both a data vector and the "
                              "index of a training data instance")
          if data_vector is not None and activation_map is not None:
              raise Exception("You cannot pass a previously computated"
                              "activation map with a data vector")
          if data_vector is not None:
              try:
                  d1, _ = data_vector.shape
                  w = data_vector.copy()
              except ValueError:
                  d1, _ = data_vector.shape
                  w = data_vector.reshape(1, d1)
              if w.shape[1] == 1:
                  w = w.T
              matrix = cdist(self.codebook.reshape((self.codebook.shape[0] *
                                                    self.codebook.shape[1],
                                                    self.codebook.shape[2])),
                             w, 'euclidean').T
              matrix.shape = (self.codebook.shape[0], self.codebook.shape[1])
          else:
              if activation_map is None and self.activation_map is None:
                  self.get_surface_state()
              if activation_map is None:
                  activation_map = self.activation_map
              matrix = activation_map[data_index].reshape((self.codebook.shape[0],
                                                           self.codebook.shape[1]))
          return self._view_matrix(matrix, figsize, colormap, colorbar,
                                   bestmatches, bestmatchcolors, labels, zoom,
                                   filename)