private DataViewRowCursor GetRowCursor(IEnumerable <DataViewSchema.Column> columnsNeeded, Random rand, DelegateGetRowCursor getterCursor) { int index = SchemaHelper.GetColumnIndex(Source.Schema, _parent.InputName); if (columnsNeeded.Where(c => c.Index == index).Any()) { var newCols = SchemaHelper.ColumnsNeeded(columnsNeeded, Schema, index, Schema.Count); var oldCols = SchemaHelper.ColumnsNeeded(newCols, Source.Schema); var cursor = getterCursor(oldCols, rand); return(new MemoryCursor <TSrc, TDst>(this, cursor, index)); } else { // The new column is not required. We do not need to compute it. But we need to keep the same schema. return(new SameCursor(getterCursor(columnsNeeded, rand), Schema)); } }
private DataViewRowCursor GetRowCursor(IEnumerable <DataViewSchema.Column> columnsNeeded, Random rand, DelegateGetRowCursor getterCursor) { ComputeNearestNeighbors(); _host.AssertValue(_input, "_input"); var schema = _input.Schema; if (columnsNeeded.Where(c => c.Index == _input.Schema.Count).Any()) { var newColumns = PredicatePropagation(columnsNeeded); var oldCols = SchemaHelper.ColumnsNeeded(newColumns, schema); var featureIndex = SchemaHelper.GetColumnIndexDC(Schema, _args.column); return(new NearestNeighborsCursor(getterCursor(oldCols, rand), this, newColumns, featureIndex)); } else { // The new column is not required. We do not need to compute it. But we need to keep the same schema. var oldCols = SchemaHelper.ColumnsNeeded(columnsNeeded, schema); return(new SameCursor(getterCursor(oldCols, rand), Schema)); } }
private DataViewRowCursor GetRowCursor(IEnumerable <DataViewSchema.Column> columnsNeeded, Random rand, DelegateGetRowCursor getterCursor) { var kind = _toShake[0].OutputType.IsVector() ? _toShake[0].OutputType.ItemType().RawKind() : _toShake[0].OutputType.RawKind(); var newCols = PredicatePropagation(columnsNeeded); var oldCols = SchemaHelper.ColumnsNeeded(newCols, _input.Schema); switch (kind) { case DataKind.Single: var cursor = getterCursor(oldCols, rand); return(new ShakeInputCursor <TInput, float>(this, cursor, newCols, _args, _inputCol, _toShake, _shakingValues, (float x, float y) => { return x + y; })); default: throw _host.Except("Not supported RawKind {0}", _toShake[0].OutputType.RawKind()); } }
private DataViewRowCursor GetRowCursor(IEnumerable <DataViewSchema.Column> columnsNeeded, Random rand, DelegateGetRowCursor getterCursor) { int classColumn = -1; if (!string.IsNullOrEmpty(_args.column)) { classColumn = SchemaHelper.GetColumnIndex(_input.Schema, _args.column); } if (_args.cache) { LoadCache(rand); } else { Contracts.Assert(_cacheReplica == null); } var cursor = getterCursor(columnsNeeded, rand); if (classColumn == -1) { return(new ResampleCursor <float>(this, cursor, columnsNeeded, _args.lambda, _args.seed, rand, _cacheReplica, SchemaHelper._dc(classColumn, cursor), float.NaN)); } var newColumns = columnsNeeded.ToList(); newColumns.Add(Schema.Where(c => c.Index == classColumn).First()); var type = _input.Schema[classColumn].Type; switch (type.RawKind()) { case DataKind.Boolean: bool clbool; if (!bool.TryParse(_args.classValue, out clbool)) { throw _host.Except("Unable to parse '{0}'.", _args.classValue); } return(new ResampleCursor <bool>(this, cursor, newColumns, _args.lambda, _args.seed, rand, _cacheReplica, SchemaHelper._dc(classColumn, cursor), clbool)); case DataKind.UInt32: uint cluint; if (!uint.TryParse(_args.classValue, out cluint)) { throw _host.Except("Unable to parse '{0}'.", _args.classValue); } return(new ResampleCursor <uint>(this, cursor, newColumns, _args.lambda, _args.seed, rand, _cacheReplica, SchemaHelper._dc(classColumn, cursor), cluint)); case DataKind.Single: float clfloat; if (!float.TryParse(_args.classValue, out clfloat)) { throw _host.Except("Unable to parse '{0}'.", _args.classValue); } return(new ResampleCursor <float>(this, cursor, newColumns, _args.lambda, _args.seed, rand, _cacheReplica, SchemaHelper._dc(classColumn, cursor), clfloat)); case DataKind.String: var cltext = new ReadOnlyMemory <char>(_args.classValue.ToCharArray()); return(new ResampleCursor <ReadOnlyMemory <char> >(this, cursor, newColumns, _args.lambda, _args.seed, rand, _cacheReplica, SchemaHelper._dc(classColumn, cursor), cltext)); default: throw _host.Except("Unsupported type '{0}'", type); } }