public override IEstimator <ITransformer> Reconcile(IHostEnvironment env, PipelineColumn[] toOutput, IReadOnlyDictionary <PipelineColumn, string> inputNames, IReadOnlyDictionary <PipelineColumn, string> outputNames, IReadOnlyCollection <string> usedNames) { // For the moment, the concat estimator can only do one concatenation at a time. // So we will chain the estimators. Contracts.AssertNonEmpty(toOutput); IEstimator <ITransformer> est = null; for (int i = 0; i < toOutput.Length; ++i) { var ccol = (IConcatCol)toOutput[i]; string[] inputs = ccol.Sources.Select(s => inputNames[s]).ToArray(); var localEst = new ConcatEstimator(env, outputNames[toOutput[i]], inputs); if (i == 0) { est = localEst; } else { est = est.Append(localEst); } } return(est); }