public DxTableFactory(Dataproject mydataproject, DPData mydpdata, List <DxTableOrder> myorders) { _orders = myorders; _dpdata = mydpdata; _dataproject = mydataproject; ProcessOrders(); }
//public FisherExactTest fisher { get { return _fisher; } } public ChiSq(DPData dpdata, List <string> vars, string subtitle) { _vars = vars; _subtitle = subtitle; //need to select only the vars passed in _dt = dpdata.Data_SelectColumns(_vars, false, true); //ConvertData(); }
public bool HasSameWorksheet(DPData dpdata) { if (dpdata == null) { return(false); } bool hassameworksheet = (this.worksheet == dpdata.selectedsheet) ? true : false; return(hassameworksheet); }
public PCA(DPData dpdata, List <string> numvars, string method, string subtitle) { _numvars = numvars; _method = method; _subtitle = subtitle; //need to select only the vars passed in _dt = dpdata.Data_SelectColumns(_numvars, false, true); ConvertData(); }
public void ProcessOrder(DxTableOrder order) { if (order.batches.Count > 0) { order.batches.Clear(); } bool hassameworksheet = order.HasSameWorksheet(_dpdata); if (!hassameworksheet) { //Need new DPData _dataproject.selectedsheet = order.worksheet; _dpdata = new DPData(_dataproject, order.filter); } bool hassamefilter = order.HasSameFilter(_dpdata); if (!hassamefilter) { _dpdata.filter = order.filter; } _dt = _dpdata.dt; //Each order will result in a list of batches //List<DxBatchOcharts> batchlist = new List<DxBatchOcharts>(); List <DxTableBatch> batchlist = new List <DxTableBatch>(); foreach (DxTableSettings settings in order.list_settings) { if (settings.outputtype == DxOutputtype.Crosstabs) { DxCrosstabsSettings mysettings = (DxCrosstabsSettings)settings; DxTableBatch batch = new DxTableBatch(mysettings, dt); PrepareBatch(batch, settings); batchlist.Add(batch); } } order.batches.AddRange(batchlist); //The invoice serves as a table of contents for what was actually created order.PrepareInvoice(); }
public List_O_PCA(DPData dpdata, List <string> numvars, string method, string groupingvar) { _pcas = new List <PCA>(); DataSubsets subsets = new DataSubsets(dpdata.dt, numvars, groupingvar); foreach (DataSubset subset in subsets.subsets) { if (subset.dt != null) { if (subset.dt.Rows.Count > 0) { DataTable mydt = dpdata.Data_SelectColumns(subset.dt, numvars, false, true); if (mydt != null) { PCA pca = new PCA(mydt, numvars, method, subset.Cols_and_Vals_ToString()); if (pca.final_N > 0) { _pcas.Add(pca); } } } } } }
//public void SetFilter(string myfilter, List<string> groups, List<string> timepts) //{ // string groups_sqlcode = (groups == null) ? "" : String.Format(" and group in ('{0}') ", String.Join("','", groups)); // string timepts_sqlcode = (timepts == null) ? "" : String.Format(" and timept in ('{0}') ", String.Join("','", timepts)); // filter = String.Format("{0}{1}{2}", myfilter, groups_sqlcode, timepts_sqlcode); //} public bool HasSameFilter(DPData dpdata) { bool hassamefilter = (this.filter == dpdata.filter) ? true : false; return(hassamefilter); }
public DxCharts(DPData dpdata) { _numtablecols = 4; _data = dpdata; LoadMarkerKinds(); }
public void ProcessOrder(DxChartOrder order) { if (order.isOrderFilled) //Already have batches { order.batches.Clear(); } //Skip the_dpdata stuff if _dt is already populated if (_dt == null) { bool hassameworksheet = order.HasSameWorksheet(_dpdata); if (!hassameworksheet) { //Need new DPData _dataproject.selectedsheet = order.worksheet; _dpdata = new DPData(_dataproject, order.filter); } bool hassamefilter = order.HasSameFilter(_dpdata); if (!hassamefilter) { _dpdata.filter = order.filter; } _dt = _dpdata.dt; } //Each order will result in a list of batches //List<DxBatchOcharts> batchlist = new List<DxBatchOcharts>(); List <DxChartBatch> batchlist = new List <DxChartBatch>(); if (order.list_settings != null) { foreach (DxChartSettings settings in order.list_settings) { #region Histogram if (settings.outputtype == DxOutputtype.Histogram) { DxHistogramSettings mysettings = (DxHistogramSettings)settings; DxChartBatch batch = new DxChartBatch(mysettings, dt); PrepareBatch(batch, settings); batchlist.Add(batch); } #endregion #region Barchart else if (settings.outputtype == DxOutputtype.Barchart) { DxBarchartSettings mysettings = (DxBarchartSettings)settings; DxChartBatch batch = new DxChartBatch(mysettings, dt); PrepareBatch(batch, settings); batchlist.Add(batch); } #endregion #region Scatterplot else if (settings.outputtype == DxOutputtype.Scatterplot) { DxScatterplotSettings mysettings = (DxScatterplotSettings)settings; if (mysettings.repeatedmeasVarname == "none") { //DxChartBatch batch = new DxChartBatch(mysettings, dt); //PrepareBatch(batch, settings); //batchlist.Add(batch); foreach (XYpairType mode in mysettings.xypairtypes) { if (mode == XYpairType.AllVars_IgnoreLevelsOfRptMeas) { mysettings.current_xypairtype = mode; //mysettings.maxCol = ncol1; //mysettings.maxRow = tmpvars.Count; mysettings.chartlayout = DxLayout.Horizontal; mysettings.repeatedmeasVarname = "none"; DxChartBatch batch1 = new DxChartBatch(mysettings, dt); PrepareBatch(batch1, (DxChartSettings)mysettings); batch1.batchtitle = String.Format("All variables (IGNORE Time/RptMeas)"); batch1.maxCol = batch1.charts.Count; batchlist.Add(batch1); } } } else if (mysettings.repeatedmeasVarname != "none") { List <string> repeatedmeas_levels = dt.AsEnumerable().Select(f => f.Field <string>(mysettings.repeatedmeasVarname)).Distinct().ToList(); List <string> analysisvars = new List <string>(); analysisvars.AddRange(mysettings.numvars); if (mysettings.agevars != null) { analysisvars.AddRange(mysettings.agevars); } int n_rptmeas = repeatedmeas_levels.Count; int n_analysisvars = analysisvars.Count; int ncol1 = utilStats.TriangleNumber(n_rptmeas); List <string> tmpvars = mysettings.analysisvars(); List <string> tmpvarsX = mysettings.analysisvarsX(); List <string> tmpvarsY = mysettings.analysisvarsY(); #region Process By Mode foreach (XYpairType mode in mysettings.xypairtypes) { if (mode == XYpairType.AllVars_IgnoreLevelsOfRptMeas) { mysettings.current_xypairtype = mode; //mysettings.maxCol = ncol1; //mysettings.maxRow = tmpvars.Count; mysettings.chartlayout = DxLayout.Horizontal; mysettings.repeatedmeasVarname = "none"; DxChartBatch batch1 = new DxChartBatch(mysettings, dt); PrepareBatch(batch1, (DxChartSettings)mysettings); batch1.batchtitle = String.Format("All variables (IGNORE Time/RptMeas)"); batch1.maxCol = batch1.charts.Count; batchlist.Add(batch1); } if (mode == XYpairType.SameVar_AcrossLevelsOfRptMeas) { mysettings.current_xypairtype = mode; mysettings.maxCol = ncol1; //mysettings.maxRow = tmpvars.Count; mysettings.chartlayout = DxLayout.Horizontal; //Loop over vars, make a batch for each one foreach (string v in tmpvars) { mysettings.manualXandYvars = true; mysettings.xvars = new List <string> { v }; mysettings.yvars = new List <string> { v }; DxChartBatch batch1 = new DxChartBatch(mysettings, dt); PrepareBatch(batch1, (DxChartSettings)mysettings); batch1.batchtitle = String.Format("{0} ACROSS levels of {1}", v, mysettings.repeatedmeasVarname); batch1.maxCol = batch1.charts.Count; batchlist.Add(batch1); } } if (mode == XYpairType.DiffVar_WithinLevelsOfRptMeas) { //#2 - treat it as square mysettings.current_xypairtype = mode; //mysettings.numvars = tmpvars; mysettings.xvars = null; mysettings.yvars = null; mysettings.chartlayout = DxLayout.Upper; mysettings.maxRow = tmpvars.Count; List <string> rptmeasLevels = dt.AsEnumerable().Select(f => f.Field <string>(mysettings.repeatedmeasVarname)).Distinct().ToList(); List <string> tmpvars_with_id = new List <string>(); tmpvars_with_id.AddRange(tmpvars); tmpvars_with_id.Add("id"); DataSubsets dt_rptmeas = new DataSubsets(dt, tmpvars_with_id, mysettings.repeatedmeasVarname); //Loop across levels of the RptMeas foreach (DataSubset subset in dt_rptmeas.subsets) { DxChartBatch batch2 = new DxChartBatch(mysettings, subset.dt); PrepareBatch(batch2, (DxChartSettings)mysettings); batch2.batchtitle = String.Format("Variables WITHIN {0}: {1}", mysettings.repeatedmeasVarname, subset.Vals_ToString()); batch2.maxCol = batch2.charts.Count; batchlist.Add(batch2); } } if (mode == XYpairType.DiffVar_AcrossLevelsOfRptMeas) { //#2 - back to original mysettings.current_xypairtype = mode; //mysettings.numvars = tmpvars; mysettings.xvars = tmpvarsX; mysettings.yvars = tmpvarsY; mysettings.manualXandYvars = true; mysettings.chartlayout = DxLayout.Horizontal; List <string> rptmeasLevels = dt.AsEnumerable().Select(f => f.Field <string>(mysettings.repeatedmeasVarname)) .Distinct().ToList(); //HERE!!!! for (int i = 0; i < (rptmeasLevels.Count - 1); i++) { for (int j = i + 1; j < rptmeasLevels.Count; j++) { DataView dv = new DataView(dt); // dt.AsDataView(); dv.RowFilter = String.Format("{0} IN ('{1}','{2}')", mysettings.repeatedmeasVarname, rptmeasLevels[i], rptmeasLevels[j]); DataTable dt_sub = dv.ToTable(); if (dt_sub.Rows.Count > 1) { DxChartBatch batch3 = new DxChartBatch(mysettings, dt_sub); PrepareBatch(batch3, (DxChartSettings)mysettings); batch3.batchtitle = String.Format("Variables ACROSS {0}:{1} & {2}", mysettings.repeatedmeasVarname, rptmeasLevels[i], rptmeasLevels[j]); batch3.maxCol = batch3.charts.Count; batchlist.Add(batch3); } } } } } } #endregion } #endregion #region Actogram else if (settings.outputtype == DxOutputtype.Actogram) { DxActogramSettings mysettings = (DxActogramSettings)settings; mysettings.outputtype = DxOutputtype.Actogram; List <string> varnames = new List <string>() { "id" }; varnames.AddRange(mysettings.numvars); varnames.Add(mysettings.xaxisvar); varnames.Add(mysettings.colorvar); varnames.RemoveAll(item => item == "variable"); varnames.RemoveAll(item => item == "none"); DataSubsets subsets = new DataSubsets(dt, varnames, new List <string> { mysettings.panelvar }); DxChartBatch batch2 = new DxChartBatch(DxOutputtype.Actogram, mysettings); foreach (DataSubset subset in subsets.subsets) { mysettings.date_txt = subset.dt.AsEnumerable().Min(f => f.Field <string>("report_date")); DxChartBatch subbatch = new DxChartBatch(mysettings, subset.dt, subset.Cols_and_Vals_ToString()); foreach (DxChart sub in subbatch.charts) { batch2.charts.Add(sub); } } PrepareBatch(batch2, mysettings); batchlist.Add(batch2); } #endregion #region Lineplot else if (settings.outputtype == DxOutputtype.Lineplot) { DxLineplotSettings mysettings = (DxLineplotSettings)settings; //NO Panels if (mysettings.panelvar == "none" | mysettings.panelvar == "variable") { DxChartBatch batch1 = new DxChartBatch(mysettings, dt, " "); PrepareBatch(batch1, settings); batchlist.Add(batch1); } else { List <string> varnames = new List <string>() { "id" }; varnames.AddRange(mysettings.numvars); varnames.Add(mysettings.xaxisvar); varnames.Add(mysettings.colorvar); varnames.RemoveAll(item => item == "variable"); varnames.RemoveAll(item => item == "none"); DataSubsets subsets = new DataSubsets(dt, varnames, new List <string> { mysettings.panelvar }); DxChartBatch batch2 = new DxChartBatch(DxOutputtype.Lineplot, mysettings); batch2.vars = mysettings.numvars; foreach (DataSubset subset in subsets.subsets) { DxChartBatch subbatch = new DxChartBatch(mysettings, subset.dt, subset.Cols_and_Vals_ToString()); foreach (DxChart sub in subbatch.charts) { batch2.charts.Add(sub); } } PrepareBatch(batch2, mysettings); batchlist.Add(batch2); } } #endregion } } order.batches.AddRange(batchlist); //The invoice serves as a table of contents for what was actually created order.PrepareInvoice(); }