private void loadModel() { var ftype = (FileExtensionEnum)this.type; var tempfullName = Path.Combine(HttpContext.Current.Server.MapPath("~/"), this.path); switch (ftype) { case FileExtensionEnum.Allmethods: if (this._mBind == null) { this._mBind = BindModel.ReadModel <BindModel>(tempfullName); this._components = this._mBind.GetComponents(); } break; case FileExtensionEnum.PLSBind: if (this._mPLS == null) { this._mPLS = BindModel.ReadModel <PLSModel>(tempfullName); this._components = this._mPLS.GetComponents(); } break; case FileExtensionEnum.IdLib: if (this._mId == null) { this._mId = BindModel.ReadModel <IdentifyModel>(tempfullName); this._components = this._mId.GetComponents(); } break; case FileExtensionEnum.FitLib: if (this._mFitting == null) { this._mFitting = BindModel.ReadModel <FittingModel>(tempfullName); this._components = this._mFitting.GetComponents(); } break; case FileExtensionEnum.PLS1: case FileExtensionEnum.PLSANN: if (this._mPLS1 == null) { this._mPLS1 = BindModel.ReadModel <PLSSubModel>(tempfullName); this._components = this._mPLS1.GetComponents(); } break; case FileExtensionEnum.ItgBind: if (this._itgSub == null) { this._itgSub = BindModel.ReadModel <IntegrateModel>(tempfullName); this._components = this._itgSub.GetComponents(); } break; default: break; } }
private void FitCurve(object obj) { double forward; if (_instrumentPriceSafeDico.TryGetValue(_forwardId, out forward)) { UpdateForwardPrices(_forwardId, _futureId); } double[,] data = new double[ImpliedVolPoints.Count, 2]; for (int i = 0; i < ImpliedVolPoints.Count; i++) { data[i, 0] = ImpliedVolPoints[i].X; data[i, 1] = ImpliedVolPoints[i].Y; } Parameter[] outParams = FittingModel.SviFit(data, forward); Param.A = Math.Round(outParams[0].Value, 4); Param.B = Math.Round(outParams[1].Value, 4); Param.Rho = Math.Round(outParams[2].Value, 4); Param.Sigma = Math.Round(outParams[3].Value, 4); Param.M = Math.Round(outParams[4].Value, 4); }
public void LoadCommandHandler() { this.InputPoints = FileReader.Points.ToObservableCollection(); this.LinePoints = FittingModel.CalculatePoints(FileReader.Points).ToObservableCollection(); this.OnPropertyChanged(nameof(this.InputPoints)); this.OnPropertyChanged(nameof(this.LinePoints)); }
private void btnRebuild_Click(object sender, EventArgs e) { if (this._lib == null || this._baseModel == null) { return; } bool needcv = false; if (MessageBox.Show("是否进行交互验证和外部验证?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { needcv = true; } this._model = Serialize.DeepClone <FittingModel>(this._baseModel); this._model.Name = this._lib.Name; this.btnRebuild.Text = "正在计算"; this.btnRebuild.Enabled = false; this.btnModelExtent.Enabled = false; this.btnLoadModel.Enabled = false; this.btnLoadSpec.Enabled = false; this.toolStripProgressBar1.Visible = true; Action a = () => { if (needcv) { this._cvLst = this._model.CrossValidation(this._lib); this._vLst = this._model.Validation(this._lib); } else { this._vLst = null; this._cvLst = null; } this._model.Train(this._lib); //显示 this.showdata(); if (this.InvokeRequired) { ThreadStart s = () => { MessageBox.Show("建模完成"); }; this.Invoke(s); } else { MessageBox.Show("建模完成"); } }; a.BeginInvoke(null, null); }
private void init(FittingModel m) { this.treeGridView1.Nodes.Clear(); this.treeGridView1.Columns.Clear(); this.treeGridView1.Columns.Add(new TreeGridColumn() { HeaderText = "名称", ReadOnly = true, ToolTipText = "样本名称", Frozen = true }); this.treeGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "拟合系数", ReadOnly = true, ToolTipText = "拟合系数", Width = 60, Frozen = true }); this.treeGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "TQ", ReadOnly = true, ToolTipText = "移动相关系数", Width = 60, Frozen = true }); this.treeGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "SQ", ReadOnly = true, ToolTipText = "识别参数", Width = 60, Frozen = true }); this.treeGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "结果", ReadOnly = true, ToolTipText = "识别结果", Width = 50, Frozen = true }); //添加性质 foreach (var c in m.SpecLib.Components) { this.treeGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Width = 60, ReadOnly = true, Name = c.Name }); } this._inited = true; }
public override void Predict(List <string> files, object model, int numofId) { this._model = model as FittingModel; if (_model == null || files == null) { throw new ArgumentNullException(""); } if (!this._inited) { if (this.treeGridView1.InvokeRequired) { ThreadStart s = () => { this.init(_model); }; this.treeGridView1.Invoke(s); } else { this.init(_model); } } var error_filelst = new List <string>(); int rowNum = 1; foreach (var f in files) { try { var spec = new Spectrum(f); var robj = _model.Predict(spec); if (this.treeGridView1.InvokeRequired) { ThreadStart s = () => { this.addRow(robj, spec, rowNum, numofId); }; this.treeGridView1.Invoke(s); } else { this.addRow(robj, spec, rowNum, numofId); } } catch (Exception ex) { log.Error(ex); error_filelst.Add(new FileInfo(f).Name); } rowNum++; } if (error_filelst.Count > 0) { MessageBox.Show(string.Format("以下{1}条光谱未正确预测:\n{0}", string.Join(";", error_filelst), error_filelst.Count )); } }
public void ModelNew() { if (this.cheakSave()) { return; } OpenFileDialog myOpenFileDialog = new OpenFileDialog(); myOpenFileDialog.Filter = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.Lib, FileExtensionEnum.Lib.GetDescription()); myOpenFileDialog.Title = "选择光谱库"; myOpenFileDialog.InitialDirectory = Busi.Common.Configuration.FolderSpecLib; if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } this._model = new FittingModel(); //初始化模型默认参数 this._model.Wind = Busi.Common.Configuration.FitWinNum; this._model.TQ = Busi.Common.Configuration.FitTQ; this._model.MinSQ = Busi.Common.Configuration.FitSQ; this._model.LibBase = new SpecBase(myOpenFileDialog.FileName); if (this._model.LibBase == null) { MessageBox.Show("光谱库加载失败!", "信息提示"); return; } // 检查性质个数并给出提示 if (this._model.LibBase.Components.Count < 1) { MessageBox.Show("您导入的光谱库没有性质,请先添加性质", "信息提示"); } libGridView.Specs = this._model.LibBase; this.preForFit.Processors = new List <NIR.Data.Preprocesser>(); this.setIdParams1.Model = this._model; this.setTQ1.Model = this._model; this.resultForm1.Model = this._model; this.calibResultForm1.Model = this._model; this.flowControl1.UnFinish(2); this.flowControl1.UnFinish(3); this.flowControl1.UnFinish(4); this.flowControl1.UnFinish(5); this.flowControl1.UnFinish(6); this.flowControl1.Active(1); this.flowControl1.Enabled = true; this.setTitle(); }
private void clear() { this.fittingGridViewCV.Clear(); this.fittingGridViewV.Clear(); this._model = null; this._cvLst = null; this._vLst = null; this.btnModelExtent.Enabled = this._lib != null && this._baseModel != null; this.btnRebuild.Enabled = this._lib != null && this._baseModel != null; this.btnSaveToBind.Enabled = false; this.btnSaveToItg.Enabled = false; this.lblInfo.Text = string.Format("光谱库{0},拟合库{1}", this._lib == null ? "未加载" : this._lib.ToString(), this._baseModel == null ? "未加载" : this._baseModel.ToString()); }
private void btnLoadModel_Click(object sender, EventArgs e) { OpenFileDialog myOpenFileDialog = new OpenFileDialog(); myOpenFileDialog.Filter = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.FitLib, FileExtensionEnum.FitLib.GetDescription()); myOpenFileDialog.InitialDirectory = Busi.Common.Configuration.FolderMFit; if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } this._baseModel = BindModel.ReadModel <FittingModel>(myOpenFileDialog.FileName); ToolTip tip = new ToolTip(); tip.SetToolTip(this.btnLoadModel, myOpenFileDialog.FileName); this.clear(); }
private void btnOpen_Click(object sender, EventArgs e) { if (this.cheakSave()) { return; } OpenFileDialog myOpenFileDialog = new OpenFileDialog(); myOpenFileDialog.Filter = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.FitLib, FileExtensionEnum.FitLib.GetDescription()); myOpenFileDialog.InitialDirectory = Busi.Common.Configuration.FolderMFit; if (myOpenFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this._model = BindModel.ReadModel <FittingModel>(myOpenFileDialog.FileName); if (this._model != null) { this.libGridView.Specs = this._model.LibBase; this.preForFit.Processors = this._model.Filters.Select(f => new RIPP.NIR.Data.Preprocesser() { Filter = f, Statu = WorkStatu.NotSet }).ToList(); this.setIdParams1.Model = this._model; this.setTQ1.Model = this._model; this.resultForm1.Model = this._model; this.calibResultForm1.Model = this._model; if (this._model.LibBase == null) { MessageBox.Show("该模型没有存储建模所需的光谱库,无法对模型进行修改,只能使用外部验证功能!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.flowControl1.Active(6); } else { this.flowControl1.Active(1); this.flowControl1.Enabled = true; } this._model.Edited = false; } } this.setTitle(); }
private void addFitModel(FittingModel model, int idx) { if (model == null) { return; } this.gridModel.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = string.Format("拟合_{0}", model.Name), Tag = model.FullPath, ToolTipText = model.FullPath, SortMode = DataGridViewColumnSortMode.NotSortable }); int colIdx = this.gridModel.Columns.Count - 1; for (int i = 0; i < this.gridModel.Rows.Count; i++) { if (this.gridModel.Rows[i].Tag == null) { continue; } var cname = this.gridModel.Rows[i].Tag.ToString(); if (model.SpecLib.Components.Contains(cname)) { this.gridModel[colIdx, i] = new DataGridViewCheckBoxCell(); if (this._model.FitSelectMatrix == null) { this.gridModel[colIdx, i].Value = true; } else { var ddd = (this._model.FitSelectMatrix[this._model.Comps.GetIndex(cname)] & ((int)Math.Pow(2, idx))) == (int)Math.Pow(2, idx); this.gridModel[colIdx, i].Value = ddd; } } else { this.gridModel[colIdx, i] = new DataGridViewTextBoxCell(); this.gridModel[colIdx, i].Value = null; } } }
private async Task Load() { FittingTable = await FittingModel.LoadAsync(); SelectedFitting = FittingTable.Rows[0].Table.AsDataView()[0]; RowCount = FittingTable.Rows.Count; _selectedDataTable = FittingTable; BriefcaseTable = await BriefcaseModel.LoadAsync(); SelectedBriefcase = BriefcaseTable.Rows[0].Table.AsDataView()[0]; ComponentGroupTable = await ComponentGroupModel.LoadAsync(); SelectedComponentGroup = ComponentGroupTable.Rows[0].Table.AsDataView()[0]; EquipmentTable = await EquipmentModel.LoadAsync(); SelectedEquipment = EquipmentTable.Rows[0].Table.AsDataView()[0]; }
public void ShowGrid(IList <FittingResult> lst, bool isTree = true, FittingModel model = null) { this._model = model; this._isTree = isTree; if (this._isTree) { this.Init(); if (lst == null) { return; } foreach (var r in lst) { this.AddResult(r); } } else { this.ShowGrid2(lst); } }
public List <FittingModel> GetFittingsFromModel(ExternalCommandData commandData, BuiltInCategory category) { var fittingModels = new List <FittingModel>(); var fittings = ElementUtils .GetElementsOfBuiltInCategory(commandData, category); foreach (var fittingElem in fittings) { var fitting = fittingElem as FamilyInstance; var fittingConnectorPoints = fitting.GetConnectorPoints(); if (fittingConnectorPoints == null || fittingConnectorPoints.Count == 0) { return(null); } var fittingModel = new FittingModel { ConnectorPoints = fittingConnectorPoints, Model = fitting }; fittingModels.Add(fittingModel); } return(fittingModels); }
// [TestMethod] public void fiiting() { var specbase = new SpecBase(@"F:\3506\15chemometrics\RIPP_DEMO\algorithm\原油测试数据\crude.Lib"); var model = new FittingModel() { Wind = 11, MinSQ = 0.98, TQ = 0.998 }; // var model = new IdentifyModel() { Wind = 11, MinSQ = 0.98, TQ = 0.998 }; model.Filters = new List <IFilter>(); model.Filters.Add(new Sgdiff(21, 2, 2)); model.Filters.Add(new SavitzkyGolay(5)); var xidx = new List <RegionPoint>(); xidx.Add(new RegionPoint(4002, 4702)); xidx.Add(new RegionPoint(5302, 6102)); var varregion = new VarRegionManu(); var argu = varregion.Argus; argu["XaxisRegion"].Value = xidx; argu["Xaxis"].Value = specbase.First().Data.X; varregion.Argus = argu; model.Filters.Add(varregion); model.Filters.Add(new NormPathLength()); model.FiltersForIdentify = Serialize.DeepClone <IList <IFilter> >(model.Filters); var vspecbase = specbase.Clone(); vspecbase.Clear(); foreach (var s in specbase) { if (s.Usage == UsageTypeEnum.Calibrate) { vspecbase.Add(s.Clone()); } } var dd = RIPP.NIR.Data.Preprocesser.Process(model.Filters, vspecbase); var writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\filterd.mat"); writer.WriteMatrix <double>(dd.GetX(), "filterd"); writer.Close(); var cv = new CrossValidation <FittingResult>(model); var lst = cv.CV(specbase); var allTQ = new DenseVector(specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count()); var allSQ = new DenseVector(specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count()); var allRate = new DenseMatrix(5, specbase.Where(d => d.Usage == UsageTypeEnum.Calibrate).Count()); for (int i = 0; i < lst.Count; i++) { allTQ[i] = lst[i].TQ; allSQ[i] = lst[i].SQ.Min(); var ddd = lst[i].Specs.Select(d => d.Rate); for (int k = 0; k < 5; k++) { if (k >= ddd.Count()) { break; } allRate[k, i] = ddd.ElementAt(k); } } writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\tq.mat"); writer.WriteMatrix <double>(allTQ.ToColumnMatrix(), "TQ"); writer.Close(); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\sq.mat"); writer.WriteMatrix <double>(allSQ.ToColumnMatrix(), "SQ"); writer.Close(); writer = new MatlabMatrixWriter(@"F:\3506\15chemometrics\RIPP_DEMO\src\RIPP\testdata\fit\result.mat"); writer.WriteMatrix <double>(allRate, "allRate"); writer.Close(); }
private void btnModelLoad_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = string.Format("所有方法文件 (*.{0};*.{2};*.{4};*.{6};*.{8};*.{10};*.{12})|*.{0};*.{2};*.{4};*.{6};*.{8};*.{10};*.{12}|{1} (*.{0})|*.{0}|{3} (*.{2})|*.{2}|{5} (*.{4})|*.{4}|{7} (*.{6})|*.{6}|{9} (*.{8})|*.{8}|{11} (*.{10})|*.{10}|{13} (*.{12})|*.{12}", FileExtensionEnum.Allmethods, FileExtensionEnum.Allmethods.GetDescription(), FileExtensionEnum.IdLib, FileExtensionEnum.IdLib.GetDescription(), FileExtensionEnum.FitLib, FileExtensionEnum.FitLib.GetDescription(), FileExtensionEnum.PLSBind, FileExtensionEnum.PLSBind.GetDescription(), FileExtensionEnum.PLS1, FileExtensionEnum.PLS1.GetDescription(), FileExtensionEnum.PLSANN, FileExtensionEnum.PLSANN.GetDescription(), FileExtensionEnum.ItgBind, FileExtensionEnum.ItgBind.GetDescription() ); dlg.InitialDirectory = Busi.Common.Configuration.DefaultDirectory; dlg.Title = "选择方法"; if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } var ftype = BindModel.CheckType(dlg.FileName); switch (ftype) { case FileExtensionEnum.Allmethods: this._mBind = BindModel.ReadModel <BindModel>(dlg.FileName); this._mBind.FullPath = dlg.FileName; this.tabControl1.SelectedIndex = 0; break; case FileExtensionEnum.PLSBind: this._mPLS = BindModel.ReadModel <PLSModel>(dlg.FileName); this._mPLS.FullPath = dlg.FileName; this.tabControl1.SelectedIndex = 1; break; case FileExtensionEnum.IdLib: this._mId = BindModel.ReadModel <IdentifyModel>(dlg.FileName); this._mId.FullPath = dlg.FileName; this.tabControl1.SelectedIndex = 2; break; case FileExtensionEnum.FitLib: this._mFitting = BindModel.ReadModel <FittingModel>(dlg.FileName); this._mFitting.FullPath = dlg.FileName; this.tabControl1.SelectedIndex = 3; break; case FileExtensionEnum.PLS1: case FileExtensionEnum.PLSANN: this._mPLS1 = BindModel.ReadModel <PLSSubModel>(dlg.FileName); this._mPLS1.FullPath = dlg.FileName; this.tabControl1.SelectedIndex = 4; break; case FileExtensionEnum.ItgBind: this._itgSub = BindModel.ReadModel <IntegrateModel>(dlg.FileName); this._itgSub.FullPath = dlg.FileName; this.tabControl1.SelectedIndex = 5; break; default: break; } this.tabChange(); var p = this.tabControl1.SelectedTab as Controls.IPanel; if (p != null) { p.Clear(); } }