code: def parse_plotPCA(self):
          
          self.deeptools_plotPCAData = dict()
          for f in self.find_log_files('deeptools/plotPCAData', filehandles=False):
              parsed_data = self.parsePlotPCAData(f)
              for k, v in parsed_data.items():
                  if k in self.deeptools_plotPCAData:
                      log.warning("Replacing duplicate sample {}.".format(k))
                  self.deeptools_plotPCAData[k] = v
              if len(parsed_data) > 0:
                  self.add_data_source(f, section='plotPCA')
  
          if len(self.deeptools_plotPCAData) > 0:
              config = {
                  'id': 'deeptools_pca_plot',
                  'title': 'deeptools: PCA Plot',
                  'xlab': 'PC1',
                  'ylab': 'PC2',
                  'tt_label': 'PC1 {point.x:.2f}: PC2 {point.y:.2f}',
              }
              data = dict()
              for s_name in self.deeptools_plotPCAData:
                  try:
                      data[s_name] = {'x': self.deeptools_plotPCAData[s_name][1], 'y': self.deeptools_plotPCAData[s_name][2]}
                  except KeyError:
                      pass
              if len(data) == 0:
                  log.debug('No valid data for PCA plot')
                  return None
  
              self.add_section(
                  name="PCA plot",
                  anchor="deeptools_pca",
                  description="PCA plot with the top two principal components calculated based on genome-wide distribution of sequence reads",
                  plot=scatter.plot(data, config)
              )
  
          return len(self.deeptools_plotPCAData)
docs: Find plotPCA output