export function getAllColumnsAndFields()

in modules/manifold/src/utils/data-processor.js [147:197]


export function getAllColumnsAndFields(x, yPred, yTrue, modelsMeta) {
  const {classLabels, nModels, nClasses} = modelsMeta;
  const {columns: columnsX, fields: fieldsX} = columnsAndFieldsFromX(x);
  const {
    columns: columnsYPred,
    fields: fieldsYPred,
  } = columnsAndFieldsFromYPred(yPred, classLabels);
  const {
    columns: columnsYTrue,
    fields: fieldsYTrue,
  } = columnsAndFieldsFromYTrue(yTrue);
  const {
    columns: columnsScore,
    fields: fieldsScore,
  } = columnsAndFieldsFromScore(columnsYPred, columnsYTrue, modelsMeta);

  const columns = [].concat.apply(
    [],
    [columnsX, columnsYPred, columnsYTrue, columnsScore]
  );
  const fields = [].concat.apply(
    [],
    [fieldsX, fieldsYPred, fieldsYTrue, fieldsScore]
  );

  // add a uuid column
  columns.unshift(dotRange(yTrue.length).map(makeUuid));
  fields.unshift({
    name: UUID_NAME,
    type: FEATURE_TYPE.UUID,
    role: FIELD_ROLE.UUID,
    dataType: DATA_TYPE.STRING,
  });
  // reassign tableFieldIndex
  fields.forEach((f, i) => {
    f.tableFieldIndex = i + 1;
  });

  const numFeatures = fieldsX.length;
  const numPredCols = nModels * nClasses;
  return {
    data: {columns, fields},
    columnTypeRanges: {
      [UUID_NAME]: [0, 1],
      x: [1, numFeatures + 1],
      yPred: [numFeatures + 1, numFeatures + numPredCols + 1],
      yTrue: [numFeatures + numPredCols + 1, numFeatures + numPredCols + 2],
      score: [numFeatures + numPredCols + 2, columns.length],
    },
  };
}