public RawColInfo(string name, string source, HiddenColumnOption hid) { Contracts.AssertNonEmpty(name); Contracts.AssertNonEmpty(source); Contracts.Assert(Enum.IsDefined(typeof(HiddenColumnOption), hid)); Name = name; Source = source; Hid = hid; }
/// <summary> /// Backwards compatibility helper function to convert the HiddenColumnOption to a boolean. /// </summary> private static bool GetHiddenOption(IHostEnvironment env, HiddenColumnOption option) { switch (option) { case HiddenColumnOption.Keep: return(true); case HiddenColumnOption.Drop: return(false); default: throw env.Except("Unsupported hide option specified"); } }
public Bindings(Arguments args, ISchema schemaInput) { Contracts.AssertValue(args); Contracts.AssertValue(schemaInput); Input = schemaInput; Contracts.Check(Enum.IsDefined(typeof(HiddenColumnOption), args.Hidden), "hidden"); HidDefault = args.Hidden; RawInfos = new RawColInfo[Utils.Size(args.Column)]; if (RawInfos.Length > 0) { var names = new HashSet <string>(); for (int i = 0; i < RawInfos.Length; i++) { var item = args.Column[i]; string dst = item.Name; string src = item.Source; if (string.IsNullOrWhiteSpace(src)) { src = dst; } else if (string.IsNullOrWhiteSpace(dst)) { dst = src; } Contracts.CheckUserArg(!string.IsNullOrWhiteSpace(dst), nameof(Column.Name)); if (!names.Add(dst)) { throw Contracts.ExceptUserArg(nameof(args.Column), "New column '{0}' specified multiple times", dst); } var hid = item.Hidden ?? args.Hidden; Contracts.CheckUserArg(Enum.IsDefined(typeof(HiddenColumnOption), hid), nameof(args.Hidden)); RawInfos[i] = new RawColInfo(dst, src, hid); } } BuildInfos(out Infos, out NameToInfoIndex, user: true); AsSchema = Schema.Create(this); }
/// <summary> /// Backwards compatibility helper function that loads a Choose Column Transform. /// </summary> private static SelectColumnsTransform LoadChooseColumnsTransform(IHostEnvironment env, ModelLoadContext ctx, IDataView input) { // *** Binary format *** // int: sizeof(Float) // bindings int cbFloat = ctx.Reader.ReadInt32(); string renameNotSupportedMsg = "Rename for ChooseColumns is not backwards compatible with the SelectColumnsTranform"; string differentHideColumnNotSupportedMsg = "Setting a hide option different from default is not compatible with SelectColumnsTransform"; // *** Binary format *** // byte: default HiddenColumnOption value // int: number of raw column infos // for each raw column info // int: id of output column name // int: id of input column name // byte: HiddenColumnOption var hiddenOption = (HiddenColumnOption)ctx.Reader.ReadByte(); Contracts.Assert(Enum.IsDefined(typeof(HiddenColumnOption), hiddenOption)); env.Check(HiddenColumnOption.Rename != hiddenOption, renameNotSupportedMsg); var keepHidden = GetHiddenOption(env, hiddenOption); int count = ctx.Reader.ReadInt32(); Contracts.CheckDecode(count >= 0); var keepHiddenCols = new HiddenColumnOption[count]; var names = new HashSet <string>(); for (int colIdx = 0; colIdx < count; ++colIdx) { string dst = ctx.LoadNonEmptyString(); Contracts.CheckDecode(names.Add(dst)); string src = ctx.LoadNonEmptyString(); var colHiddenOption = (HiddenColumnOption)ctx.Reader.ReadByte(); Contracts.Assert(Enum.IsDefined(typeof(HiddenColumnOption), colHiddenOption)); env.Check(colHiddenOption != HiddenColumnOption.Rename, renameNotSupportedMsg); var colKeepHidden = GetHiddenOption(env, colHiddenOption); env.Check(colKeepHidden == keepHidden, differentHideColumnNotSupportedMsg); } return(new SelectColumnsTransform(env, names.ToArray(), null, keepHidden)); }
public Bindings(ModelLoadContext ctx, ISchema schemaInput) { Contracts.AssertValue(ctx); Contracts.AssertValue(schemaInput); Input = schemaInput; // *** Binary format *** // byte: default HiddenColumnOption value // int: number of raw column infos // for each raw column info // int: id of output column name // int: id of input column name // byte: HiddenColumnOption HidDefault = (HiddenColumnOption)ctx.Reader.ReadByte(); Contracts.CheckDecode(Enum.IsDefined(typeof(HiddenColumnOption), HidDefault)); int count = ctx.Reader.ReadInt32(); Contracts.CheckDecode(count >= 0); RawInfos = new RawColInfo[count]; if (count > 0) { var names = new HashSet <string>(); for (int i = 0; i < count; i++) { string dst = ctx.LoadNonEmptyString(); Contracts.CheckDecode(names.Add(dst)); string src = ctx.LoadNonEmptyString(); var hid = (HiddenColumnOption)ctx.Reader.ReadByte(); Contracts.CheckDecode(Enum.IsDefined(typeof(HiddenColumnOption), hid)); RawInfos[i] = new RawColInfo(dst, src, hid); } } BuildInfos(out Infos, out NameToInfoIndex, user: false); AsSchema = Schema.Create(this); }