Exemple #1
0
        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;
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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;
            }
        }
Exemple #5
0
        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
                                              ));
            }
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        /// <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);
        }
Exemple #8
0
        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;
                        }
                    }
                }
            }
        }
Exemple #9
0
        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();
            }
        }