docs: def files_log_graph(self, stream):
          ''' Build up a graph (nodes and edges from a Bro dns.log) '''
          for row in list(stream):
  
              # dataframes['files_log'][['md5','mime_type','missing_bytes','rx_hosts','source','tx_hosts']]
              
              # If the mime-type is interesting add the uri and the host->uri->host relationships
              if row['mime_type'] not in self.exclude_mime_types:
  
                  # Check for weird conditions
                  if (row['total_bytes'] == '-'):
                      continue
                  if ('-' in row['md5']):
                      continue
  
                  # Check for missing bytes and small file
                  if row['missing_bytes']:
                      labels = ['missing', 'file']
                  elif row['total_bytes'] < 50*1024:
                      labels = ['small','file']
                  else:
                      labels = ['file']
  
                  # Make the file node name kewl
                  name = '%6s  %s  %.0f-KB' % (row['md5'][:6], row['mime_type'], row['total_bytes']/1024.0)
                  if row['missing_bytes']:
                      name += '*'
                  name = name.replace('application/','')
                  
                  # Add the file node
                  self.add_node(row['md5'], name, labels)
  
                  # Add the tx_host
                  self.add_node(row['tx_hosts'], row['tx_hosts'], ['host'])
  
                  # Add the file->tx_host relationship
                  self.add_rel(row['tx_hosts'], row['md5'], 'file')