static bool ValidateDataset(IDataset ds) { int i0 = ds.Rows - pcaSamples; if ((i0 > 0) && ds.BodyList.Skip(i0).All(b => b.IsDummy)) { for (int i = i0; i < ds.BodyList.Count; i++) ds.BodyList[i].Disabled = false; return true; } else { var ret = MsgBox.YesNoTimed("Current dataset is invalid for dual metric. Do you want to adjust the dataset for dual metric?", "Dual Metric", 5); if (ret == DialogResult.Yes) { i0 = ds.Rows; var rg = new Random(); for (int i = 0; i < pcaSamples; i++) { IBody b = ds.AddRow("." + i, null, (short)51, null); b.IsDummy = true; b.X = rg.Next((int)ds.CurrentMap.Width); b.Y = rg.Next((int)ds.CurrentMap.Height); if ((i == 0) || (i == (pcaSamples - 1))) b.Highlighted = true; if (i == 0) b.ShowId = true; } ds.CurrentMap.GlyphType = DualAffinity.GlyphSets; ds.CurrentMap.RedrawAll(); SingleCellPlugin.App.ScriptApp.Folder.DataChanged = true; Root.Data.Map.Metric = null; return true; } else { return false; } } }
static bool ValidateDataset(IDataset ds) { int i0 = ds.Rows - ds.Columns; var csList = ds.ColumnSpecList; if ((ds.Rows > ds.Columns) && Enumerable.Range(0, ds.Columns).All(i => ds.BodyList[i0 + i].Id == csList[i].Id)) { return(true); } else { var ret = MsgBox.YesNoTimed("Current dataset is invalid for dual metric. Do you want to adjust the dataset for dual metric?", "Dual Metric", 5); if (ret == DialogResult.Yes) { var rg = new Random(); for (int col = 0; col < ds.Columns; col++) { var cs = ds.ColumnSpecList[col]; var b = ds.AddRow(cs.Id, cs.Name, (short)16, null); b.X = rg.Next((int)ds.CurrentMap.Width); b.Y = rg.Next((int)ds.CurrentMap.Height); b.IsDummy = true; } ds.CurrentMap.GlyphType = GlyphSets; ds.CurrentMap.RedrawAll(); SingleCellPlugin.App.ScriptApp.Folder.DataChanged = true; return(true); } else { return(false); } } }