public void CloneState() { if (Interlocked.Increment(ref _parent.StateRefCount) > 1) { State = (ForecastingStateBase)_parent.StateRef.Clone(); } }
private Delegate MakeGetter(DataViewRow input, ForecastingStateBase state) { _host.AssertValue(input); var srcGetter = input.GetGetter <TInput>(input.Schema[_inputColumnIndex]); ProcessData processData = _parent.WindowSize > 0 ? (ProcessData)state.Process : state.ProcessWithoutBuffer; ValueGetter <VBuffer <float> > valueGetter = (ref VBuffer <float> dst) => { TInput src = default; if (_dontFetchSrcValue) { state.TransformCore(ref src, null, 0, ref dst); return; } srcGetter(ref src); processData(ref src, ref dst); }; return(valueGetter); }
private Action <PingerArgument> MakePinger(DataViewRow input, ForecastingStateBase state) { _host.AssertValue(input); var srcGetter = input.GetGetter <TInput>(input.Schema[_inputColumnIndex]); Action <PingerArgument> pinger = (PingerArgument args) => { state.LocalConfidenceLevel = args.ConfidenceLevel; state.LocalHorizon = args.Horizon; // This means don't call srcGetter in getters. if (args.DontConsumeSource) { _dontFetchSrcValue = true; return; } _dontFetchSrcValue = false; TInput src = default; srcGetter(ref src); state.UpdateState(ref src, args.RowPosition, _parent.WindowSize > 0); }; return(pinger); }
public Mapper(IHostEnvironment env, SequentialForecastingTransformBase <TInput, TState> parent, DataViewSchema inputSchema) { Contracts.CheckValue(env, nameof(env)); _host = env.Register(nameof(Mapper)); _host.CheckValue(inputSchema, nameof(inputSchema)); _host.CheckValue(parent, nameof(parent)); if (!inputSchema.TryGetColumnIndex(parent.InputColumnName, out _inputColumnIndex)) { throw _host.ExceptSchemaMismatch(nameof(inputSchema), "input", parent.InputColumnName); } var colType = inputSchema[_inputColumnIndex].Type; if (colType != NumberDataViewType.Single) { throw _host.ExceptSchemaMismatch(nameof(inputSchema), "input", parent.InputColumnName, "Single", colType.ToString()); } _parent = parent; _parentSchema = inputSchema; State = (ForecastingStateBase)_parent.StateRef; _dontFetchSrcValue = false; }