@Override public void process(final DAVOptions options) { final String[] args = getOriginalArgs(); final UseModality<DAVOptions> executed; final int maxSplitIndex = splitPlan.getMaxSplitIndex(); final ProgressLogger logger = new ProgressLogger(LOGGER); logger.expectedUpdates = maxSplitIndex; logger.itemsName = "splits"; logger.priority = Level.INFO; logger.start("Parallel split processing"); final SplitParallelRegion region = new SplitParallelRegion(maxSplitIndex, args, logger); try { getParallelTeam().execute(region); } catch (Exception e) { LOGGER.error("An exception occurred.", e); } logger.stop(); /** Time the duration of the sequence: */ timeService.setModelId(modelId); timeService.stop(); executed = region.getExecuted(); if (executed != null && executed instanceof SequenceMode) { // if we executed SequenceMode final SequenceMode sequenceMode = (SequenceMode) executed; if (evaluateStatistics) { final String label = sequenceMode.getValue("label"); final String statsFilename = sequenceMode.getValue("predictions-filename"); if (statsFilename != null && label != null) { // and the sequence defined the variables "predictions-filename" and "label" try { final List<String> statsModeArgs = new ObjectArrayList<String>( new String[] { "--mode", "stats", "--predictions", statsFilename, "--submission-file", labelPrefix(label) + "-maqcii-submission.txt", "--label", label, "--model-id", modelId, "--dataset-name", options.datasetName, "--other-measures", "prec,rec,F-1,MCC,binary-auc" }); if (options.adjustSignalToFloorValue) { statsModeArgs.add("--floor"); statsModeArgs.add(Double.toString(options.signalFloorValue)); } // extract survival options if any // TODO: clean this up - we should not be checking for "%survival%" final String survivalFileName = sequenceMode.getValue("survival"); if (StringUtils.isNotBlank(survivalFileName) && !"%survival%".equals(survivalFileName)) { statsModeArgs.add("--survival"); statsModeArgs.add(survivalFileName); } LOGGER.debug("Estimating statistics: " + statsModeArgs); // we create a new DAVMode here since we want to use the old StatsMode code // which is no longer exposed by DiscoverAndValidate (BDVal main method) final DAVMode statsMode = new DAVMode(); statsMode.registerMode("stats", StatsMode.class); final DAVOptions statsModeOptions = new DAVOptions(); statsMode.process( statsModeArgs.toArray(new String[statsModeArgs.size()]), statsModeOptions); } catch (Exception e) { LOGGER.error("Error executing --mode stats for all splits", e); } } } } }