/**
   * Create an experiment output layout.
   *
   * @param experiments The experiments.
   * @param measurements The measurements.
   * @return An output layout for the suite of experiments.
   */
  public static ExperimentOutputLayout create(
      ExperimentSuite experiments, MeasurementSuite measurements) {
    TableLayoutBuilder master = new TableLayoutBuilder();
    master.addColumn("Algorithm");
    Map<String, Integer> dataColumns = new HashMap<String, Integer>();
    for (String attr : experiments.getDataAttributes()) {
      dataColumns.put(attr, master.getColumnCount());
      master.addColumn(attr);
    }

    Map<String, Integer> algoColumns = new HashMap<String, Integer>();
    for (String attr : experiments.getAlgorithmAttributes()) {
      algoColumns.put(attr, master.getColumnCount());
      master.addColumn(attr);
    }

    TableLayout common = master.build();

    TableLayout results = layoutAggregateOutput(master, measurements);
    TableLayout user = layoutUserTable(master, measurements);

    return new ExperimentOutputLayout(common, dataColumns, algoColumns, results, user);
  }