public static ParseSetup guessSetup( Key[] fkeys, ParseSetup userSetup ) {

    //Guess setup of each file and collect results
    GuessSetupTsk t = new GuessSetupTsk(userSetup);
    t.doAll(fkeys).getResult();

    //Calc chunk-size
    // FIXME: should be a parser specific - or at least parser should be able to override defaults
    Iced ice = DKV.getGet(fkeys[0]);
    if (ice instanceof Frame && ((Frame) ice).vec(0) instanceof UploadFileVec) {
      t._gblSetup._chunk_size = FileVec.DFLT_CHUNK_SIZE;
    } else {
      t._gblSetup._chunk_size = FileVec.calcOptimalChunkSize(t._totalParseSize, t._gblSetup._number_columns, t._maxLineLength,
              Runtime.getRuntime().availableProcessors(), H2O.getCloudSize(), false /*use new heuristic*/, true);
    }

    return t._gblSetup;
  }
public static ParseSetup guessSetup ( Key [ ] fkeys , ParseSetup userSetup ) { GuessSetupTsk t = new GuessSetupTsk ( userSetup ) ; t . doAll ( fkeys ) . getResult ( ) ; Iced ice = DKV . getGet ( fkeys [ 0 ] ) ; if ( ice instanceof Frame && ( ( Frame ) ice ) . vec ( 0 ) instanceof UploadFileVec ) { t . _gblSetup . _chunk_size = FileVec . DFLT_CHUNK_SIZE ; } else { t . _gblSetup . _chunk_size = FileVec . calcOptimalChunkSize ( t . _totalParseSize , t . _gblSetup . _number_columns , t . _maxLineLength , Runtime . getRuntime ( ) . availableProcessors ( ) , H2O . getCloudSize ( ) , false , true ) ; } return t . _gblSetup ; }
Discover the parse setup needed to correctly parse all files.
This takes a ParseSetup as guidance.  Each file is examined
individually and then results merged.  If a conflict exists
between any results all files are re-examined using the
best guess from the first examination.

@param fkeys Keys to input vectors to be parsed
@param userSetup Setup guidance from user
@return ParseSetup settings from looking at all files