public override void Extend(RecordWriter Output, DataSet Data, FNodeSet ClusterVariables, FNodeSet OtherKeepers, Predicate Where) { // Check that the ClusterVariable count matches the internal node set count // if (ClusterVariables.Count != this._fields.Count) throw new ArgumentException("The cluster variable count passed does not match the internal cluster variable count"); // Create the selectors // FNodeSet values = OtherKeepers.CloneOfMe(); FNode n = new FNodeResult(null, new RowClusterCellFunction(this._rule, this._means)); foreach (FNode t in ClusterVariables.Nodes) { n.AddChildNode(t.CloneOfMe()); } values.Add("CLUSTER_ID", n); // Run a fast select // FastReadPlan plan = new FastReadPlan(Data, Where, values, Output); }
public override Table Extend(string Dir, string Name, DataSet Data, FNodeSet ClusterVariables, FNodeSet OtherKeepers, Predicate Where) { // Check that the ClusterVariable count matches the internal node set count // if (ClusterVariables.Count != this._fields.Count) throw new ArgumentException("The cluster variable count passed does not match the internal cluster variable count"); // Create the selectors // FNodeSet values = OtherKeepers.CloneOfMe(); FNode n = new FNodeResult(null, new RowClusterCellFunction(this._rule, this._means)); foreach (FNode t in ClusterVariables.Nodes) { n.AddChildNode(t.CloneOfMe()); } values.Add("CLUSTER_ID", n); // Build a recordset // Table tablix = new Table(Dir, Name, values.Columns, Data.MaxRecords); RecordWriter w = tablix.OpenWriter(); // Run a fast select // FastReadPlan plan = new FastReadPlan(Data, Where, values, w); w.Close(); return tablix; }
public override Table Extend(string Dir, string Name, DataSet Data, FNodeSet Inputs, FNodeSet OtherKeepValues, Predicate Where) { // Combine the keep variables and the expected nodes // FNodeSet nodes = FNodeSet.Union(OtherKeepValues.CloneOfMe(), this.Responses.Expected); // Open the reader // RecordReader rr = Data.OpenReader(Where); // Create the output table and stream // Table q = new Table(Dir, Name, nodes.Columns); RecordWriter Output = q.OpenWriter(); // Create a memory structure // StaticRegister mem = new StaticRegister(Data.Columns); // Assign both the input set and output set to the memory structure // nodes.AssignRegister(mem); Inputs.AssignRegister(mem); // Run through each record // while (rr.EndOfData == false) { // Assign memory // mem.Assign(rr.ReadNext()); // Get the array of doubles for the network // double[] d = Record.ToDouble(Inputs.Evaluate()); // Render each node // this._Nodes.Render(d); // Output // Record t = nodes.Evaluate(); Output.Insert(t); } Output.Close(); return q; }