Beispiel #1
0
  public void flush() throws IOException {
    lock.lock();
    for (Map.Entry<BoolArray, FreqMap.Count> entry : labelMap.map.entrySet())
      writer.write(entry.getKey().getAsBigInt().toString(32) + " " + entry.getValue() + "\n");
    for (int i = 0; i < longLabelMap.keys.length; i++)
      if (longLabelMap.allocated[i])
        writer.write(Long.toString(longLabelMap.keys[i], 32) + " " + longLabelMap.values[i] + "\n");

    if (isVerbose()) System.out.printf("Flushed LabelMap to disk. Total %,d subgraphs.\n", size());
    labelMap.clear();
    longLabelMap.clear();
    writer.flush();
    lock.unlock();
  }
Beispiel #2
0
  public void add(Multiset<BoolArray> multiset) {
    lock.lock();
    for (HashMultiset.Entry<BoolArray> entry : multiset.entrySet()) {
      BoolArray label =
          new SubGraphStructure(entry.getElement().getArray()).getOrderedForm().getAdjacencyArray();
      labelMap.add(label, entry.getCount());
    }

    if (isVerbose()) {
      System.out.printf(
          "Added %,d new signatures. LabelMap size:%,d\n", multiset.elementSet().size(), size());
    }
    if (size() > capacity)
      try {
        flush();
      } catch (IOException exp) {
        exp.printStackTrace();
        System.exit(-1);
      }
    lock.unlock();
  }
Beispiel #3
0
 public int size() {
   return labelMap.size() + longLabelMap.size();
 }