private void btnAddtmpl_Click(object sender, EventArgs e) { OpenFileDialog myOpenFileDialog = new OpenFileDialog() { Filter = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.LibTmp, FileExtensionEnum.LibTmp.GetDescription()), InitialDirectory = Busi.Common.Configuration.FolderSpecTemp }; if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } try { var s = new SpecBase(myOpenFileDialog.FileName); this._model = new IntegrateModel(); this._model.Comps = s.Components.Clone(); this.initGrid(); } catch { } this.btnAddModel.Enabled = true; this.btnSave.Enabled = true; }
private void btnOpen_Click(object sender, EventArgs e) { OpenFileDialog myOpenFileDialog = new OpenFileDialog(); myOpenFileDialog.Filter = string.Format("{1} (*.{0})|*.{0}", FileExtensionEnum.ItgBind, FileExtensionEnum.ItgBind.GetDescription()); myOpenFileDialog.Title = "选择方法"; myOpenFileDialog.InitialDirectory = Busi.Common.Configuration.FolderMInteg; if (myOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } this._model = BindModel.ReadModel <IntegrateModel>(myOpenFileDialog.FileName); //检查子方法是否存在 List <string> notExitFiles = this._model.CheckModelNotExist(); if (notExitFiles.Count > 0) { MessageBox.Show(string.Format("以下方法不存在,未被加载:\n{0}", string.Join("\n", notExitFiles))); return; } this.initGrid(); this.showModel(); this.setWightWithModel(); this.btnAddModel.Enabled = true; this.btnSave.Enabled = true; this.setTitle(); }
private void init(IntegrateModel m) { this.dataGridView1.Columns.Clear(); this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "样本名称", Width = 120 }); foreach (var sm in m.Comps) { this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = sm.Name, ToolTipText = sm.Name, Width = 60, Tag = sm.Name }); } this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill }); this._inited = true; }
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; } }
public override void Predict(List <string> files, object model, int numofId) { //throw new NotImplementedException(); IntegrateModel m = model as IntegrateModel; if (m == null || files == null) { throw new ArgumentNullException(""); } if (!this._inited) { if (this.dataGridView1.InvokeRequired) { ThreadStart s = () => { this.init(m); }; this.dataGridView1.Invoke(s); } else { this.init(m); } } var error_filelst = new List <string>(); int rowNum = 1; foreach (var f in files) { try { var spec = new Spectrum(f); var robj = m.Predict(spec, true, numofId); if (this.dataGridView1.InvokeRequired) { ThreadStart s = () => { this.addRow(robj, spec, rowNum, numofId); }; this.dataGridView1.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 )); } }
/// <summary> /// API 2,根据混兑比例和切割方案获取数据 /// </summary> /// <param name="s"></param> /// <returns></returns> private OilInfoBEntity getByRate(Specs s, BindResult pr, ref List <PropertyTable> result) { var r = pr.GetResult <FittingResult>(); if (r != null) { var oilApplyBll = new OilApplyAPIBll(); //切割比率 var cutOilRates = new List <CutOilRateEntity>(); foreach (var l in r.Specs) { cutOilRates.Add(new CutOilRateEntity() { crudeIndex = l.Spec.UUID, rate = (float)(l.Rate * 100) }); } var cuts = new List <CutMothedAPIEntity>(); foreach (var t in this._initP) { if (t.Table == PropertyType.NIR) { continue; } cuts.Add(new CutMothedAPIEntity() { ICP = (int)t.BoilingStart, ECP = (int)t.BoilingEnd, Name = this.convertEnum(t.Table) }); } try { log.Info(string.Join(";", cutOilRates.Select(d => string.Format("{0},{1}", d.crudeIndex, d.rate)))); log.Info(string.Join(";", cuts.Select(d => string.Format("ICP={0},ECP={1},Name={2}", d.ICP, d.ECP, d.Name)))); var oil = oilApplyBll.GetCutResultAPI(cutOilRates, cuts); if (oil != null) { var lst = oil.OilDataTableBAPIEntityList; convertEntity(lst, ref result, IntegrateModel.GetConfidence(r.TQ, r.MinTQ, r.SQ, r.MinSQ)); } return(oil); } catch (Exception ex) { log.Error(ex.ToString()); } } return(null); }
/// <summary> /// API 1,根据原油名称的切割方案获取数据 /// </summary> /// <param name="s"></param> /// <returns></returns> private OilInfoBEntity getByName(Specs s, BindResult pr, ref List <PropertyTable> result) { var r = pr.GetResult <IdentifyResult>(); if (r != null) { OilInfoBEntity oil = new OilInfoBEntity(); //新建一条原油 var oilApplyBll = new OilApplyAPIBll(); var cuts = new List <CutMothedAPIEntity>(); foreach (var t in this._initP) { if (t.Table == PropertyType.NIR) { continue; } cuts.Add(new CutMothedAPIEntity() { ICP = (int)t.BoilingStart, ECP = (int)t.BoilingEnd, Name = this.convertEnum(t.Table) }); } try { log.Info(r.Items.First().Spec.UUID); log.Info(string.Join(";", cuts.Select(d => string.Format("ICP={0},ECP={1},Name={2}", d.ICP, d.ECP, d.Name)))); oil = oilApplyBll.GetCutResultAPI(r.Items.First().Spec.UUID, cuts); if (oil != null) { var lst = oil.OilDataTableBAPIEntityList; convertEntity(lst, ref result, IntegrateModel.GetConfidence(r.Items.First().TQ, r.MinTQ, r.Items.First().SQ, r.MinSQ)); //写入值信度 } else { log.ErrorFormat("GetCutResultAPI({0})", r.Items.First().Spec.UUID); } return(oil); } catch (Exception ex) { log.Error(ex.ToString()); } } return(null); }
public static void GetNIRData(Specs s, OilInfoBEntity oil, ref List <PropertyTable> lst) { if (s == null || s.Spec == null || s.Spec.Components == null) { return; } var cmps = s.Spec.Components; var t = lst.Where(d => d.Table == PropertyType.NIR).FirstOrDefault(); if (t != null) { if (oil != null) { t.OilInfoDetail = new OilInfo() { CrudeIndex = oil.crudeIndex, CrudeName = oil.crudeName } } ; double confidence = double.NaN; List <IntegrateResultItem> itgResult = null; switch (s.ResultObj.MethodType) { case PredictMethod.Identify: var r1 = s.ResultObj.GetResult <IdentifyResult>(); confidence = IntegrateModel.GetConfidence(r1.Items.First().TQ, r1.MinTQ, r1.Items.First().SQ, r1.MinSQ); break; case PredictMethod.Fitting: var r2 = s.ResultObj.GetResult <FittingResult>(); confidence = IntegrateModel.GetConfidence(r2.TQ, r2.MinTQ, r2.SQ, r2.MinSQ); break; case PredictMethod.PLSBind: confidence = 90; break; case PredictMethod.Integrate: itgResult = s.ResultObj.GetResult <List <IntegrateResultItem> >(); break; } foreach (var c in cmps) { var item = t.Datas.Where(d => d.Name == c.Name).FirstOrDefault(); if (item != null) { item.Value = c.PredictedValue; if (s.ResultObj.MethodType == PredictMethod.Integrate) { var itgitem = itgResult.Where(d => d.Comp.Name == c.Name).FirstOrDefault(); if (itgResult != null) { item.Confidence = itgitem.ConfidenceOutter; } } else { item.Confidence = confidence; } } } } }
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(); } }