Exemplo n.º 1
0
 public Tuple<bool, Exception> ComputeEigen(Dictionary<VariableDesc, double[]> dataDict)
 {
     bool bRet = false;
     Exception err = null;
     try
     {
         List<VariableDesc> oList = dataDict.Keys.ToList();
         oList.Sort();
         int nv = oList.Count;
         if (nv < 2)
         {
             return new Tuple<bool, Exception>(bRet, new ArgumentException());
         }
         int nr = 0;
         foreach (var v in dataDict.Keys)
         {
             var dd = dataDict[v];
             if (dd == null)
             {
                 return new Tuple<bool, Exception>(bRet, new ArgumentException());
             }
             if (nr < 1)
             {
                 nr = dd.Length;
             }
             if (nr > dd.Length)
             {
                 nr = dd.Length;
             }
         } // v
         if (nr <= nv)
         {
             return new Tuple<bool, Exception>(false, new ArgumentException());
         }
         double[,] data = new double[nr, nv];
         for (int ivar = 0; ivar < nv; ++ivar)
         {
             var v = oList[ivar];
             double[] dd = dataDict[v];
             for (int irow = 0; irow < nr; ++irow)
             {
                 data[irow, ivar] = dd[irow];
             }// irow
         }// ivar
         if (!ComputeEigen(data, out err))
         {
             m_initialdata = null;
             myInit();
             return new Tuple<bool, Exception>(false, err);
         }
         this.m_variablesdescs = new VariableDescs(oList);
         bRet = true;
     }// try
     catch (Exception ex)
     {
         err = ex;
     }
     return new Tuple<bool, Exception>(bRet, err);
 }
        public Tuple<IndivDescs, VariableDescs, Exception> FetchAllDataSetData(StatDataSet oSet)
        {
            IndivDescs indivs = null;
            VariableDescs vars = null;
            Exception err = null;
            try
            {
                using (var ctx = getContext())
                {
                    DbDataSet pSet = findDataSet(ctx, oSet);
                    if (pSet == null)
                    {
                        return new Tuple<IndivDescs, VariableDescs, Exception>(indivs, vars, err);
                    }
                    DbVariable pIdVar = null;
                    DbVariable pNameVar = null;
                    DbVariable pImageVar = null;
                    var q = from x in pSet.Variables orderby x.Name select x;
                    foreach (var v in q)
                    {
                        if (v.IsId)
                        {
                            pIdVar = v;
                        }
                        if (v.IsName)
                        {
                            pNameVar = v;
                        }
                        if (v.IsImageVar)
                        {
                            pImageVar = v;
                        }
                    }// v
                    bool bImageInt = false;
                    if (pImageVar != null)
                    {
                        String s = pImageVar.VarType.Trim().ToLower();
                        if ((s != "string") && (s != "bool"))
                        {
                            bImageInt = true;
                        }
                    }
                    List<VariableDesc> oRet = new List<VariableDesc>();
                    HashSet<int> oSetIndex = new HashSet<int>();
                    List<IndivDesc> listIndivs = new List<IndivDesc>();
                    Dictionary<int, ValueDescs> vals = new Dictionary<int, ValueDescs>();
                    foreach (var p in q)
                    {
                        VariableDesc pp = new VariableDesc();
                        convertVariable(p, pp);
                        var col = p.Values;
                        List<ValueDesc> pList = new List<ValueDesc>();
                        foreach (var v in col)
                        {
                            int index = v.Index;
                            if (index >= 0)
                            {
                                ValueDesc vv = new ValueDesc();
                                convertValue(v, vv);
                                pList.Add(vv);
                                if (!vals.ContainsKey(index))
                                {
                                    vals[index] = new ValueDescs();
                                }
                                (vals[index]).Add(vv);
                                if (!oSetIndex.Contains(index))
                                {
                                    oSetIndex.Add(index);
                                    var ind = new IndivDesc();
                                    listIndivs.Add(ind);
                                    ind.IndivIndex = index;
                                    if (pIdVar != null)
                                    {
                                        var qx = from x in pIdVar.Values where x.Index == index select x;
                                        if (qx.Count() > 0)
                                        {
                                            ind.IdString = qx.First().Value;
                                        }
                                    }// Id
                                    if (pNameVar != null)
                                    {
                                        var qx = from x in pNameVar.Values where x.Index == index select x;
                                        if (qx.Count() > 0)
                                        {
                                            ind.Name = qx.First().Value;
                                        }
                                    }// name
                                    if (pImageVar != null)
                                    {
                                        var qx = from x in pImageVar.Values where x.Index == index select x;
                                        if (qx.Count() > 0)
                                        {
                                            var px = qx.First();
                                            String sx = StatHelpers.ConvertValue(px.Value);
                                            if (!String.IsNullOrEmpty(sx))
                                            {
                                                if (bImageInt)
                                                {
                                                    double dval = 0.0;
                                                    if (double.TryParse(sx, out dval))
                                                    {
                                                        int ival = (int)dval;
                                                        if (ival != 0)
                                                        {
                                                            var qz = from x in ctx.DbPhotoes where x.Id == ival select x;
                                                            if (qz.Count() > 0)
                                                            {
                                                                var pz = qz.First();
                                                                ind.PhotoId = pz.Id;
                                                                ind.PhotoData = pz.DataBytes;
                                                            }
                                                        }// ival
                                                    }
                                                }
                                                else
                                                {
                                                    var qz = from x in ctx.DbPhotoes where x.Name.Trim().ToLower() == sx.ToLower() select x;
                                                    if (qz.Count() > 0)
                                                    {
                                                        var pz = qz.First();
                                                        ind.PhotoId = pz.Id;
                                                        ind.PhotoData = pz.DataBytes;
                                                    }
                                                }// ival
                                            }// sx
                                        }
                                    }// photo

                                }// add value
                            }// v
                        }// v
                        var xx = getVariableInfo(ctx, pp);
                        if (xx.Item2 != null)
                        {
                            return new Tuple<IndivDescs, VariableDescs, Exception>(indivs, vars, err);
                        }
                        pp.Info = xx.Item1;
                        pp.Values = new ValueDescs(pList);
                        oRet.Add(pp);
                    }// p
                    foreach (var ind in listIndivs)
                    {
                        int index = ind.IndivIndex;
                        if (vals.ContainsKey(index))
                        {
                            ind.Values = vals[index];
                        }
                    }// ind
                    if (listIndivs.Count > 1)
                    {
                        listIndivs.Sort();
                    }
                    if (oRet.Count > 1)
                    {
                        oRet.Sort();
                    }
                    indivs = new IndivDescs(listIndivs);
                    vars = new VariableDescs(oRet);
                }// ctx
            }// try
            catch (Exception ex)
            {
                err = ex;
            }
            return new Tuple<IndivDescs, VariableDescs, Exception>(indivs, vars, err);
        }
Exemplo n.º 3
0
 }// PhotosModelView
 #endregion // Constructors
 public void RefreshLeftVariables()
 {
     var p = this.LeftVariables;
     if (p.Count < 1)
     {
         var col = new VariableDescs();
         foreach (var v in m_main.AllComputeVariables)
         {
             col.Add(v);
         }
         this.LeftVariables = col;
         this.CurrentVariables = null;
     }
 }// RefreshComputeVariables
Exemplo n.º 4
0
 void m_main_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (m_busy)
     {
         return;
     }
     m_busy = true;
     String name = e.PropertyName;
     if (name == "IsBusy")
     {
         NotifyPropertyChanged("IsBusy");
         return;
     }
     if (name == "AllIndividus")
     {
         this.Individus = null;
         RefreshVariablesValues();
     }
     else if (name == "AllComputeVariables")
     {
         this.AllComputeVariables = null;
         var col = new VariableDescs();
         foreach (var v in m_main.AllComputeVariables)
         {
             col.Add(v);
         }
         this.LeftVariables = col;
         this.CurrentVariables = null;
     }
     else if (name == "AllCategVariables")
     {
         NotifyPropertyChanged("AllCategVariables");
     }
     else if (name == "CurrentCategVariable")
     {
         this.updateCategValues();
         NotifyPropertyChanged("CurrentCategVariable");
     }
     else if (name == "AllNumVariables")
     {
         this.CurrentXVariable = null;
         this.CurrentYVariable = null;
         NotifyPropertyChanged("NumVariables");
         NotifyPropertyChanged("AllNumVariables");
     }
     m_busy = false;
 }// PhotosModelView
 void m_main_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (m_busy)
     {
         return;
     }
     m_busy = true;
     String name = e.PropertyName;
     if (name == "IsBusy")
     {
         NotifyPropertyChanged("IsBusy");
         return;
     }
     if (name == "Variables")
     {
         NotifyPropertyChanged("AllVariables");
         this.InitialData = null;
     }
     if (name == "CurrentStatDataSet")
     {
         m_main.RefreshVariables();
     }
     else if (name == "AllNumVariables")
     {
         NotifyPropertyChanged("AllNumVariables");
         this.m_currentvariables = null;
         this.LeftVariables = m_main.AllNumVariables;
         NotifyPropertyChanged("CurrentVariables");
         this.RefreshVariablesValues();
     }
     else if (name == "AllCategVariables")
     {
         this.m_currentcategvariable = null;
         NotifyPropertyChanged("AllCategVariables");
         NotifyPropertyChanged("CurrentcategVariable");
         if (this.CurrentType == TYPE_INDIVS)
         {
             this.UpdatePlot();
         }
     }
     m_busy = false;
 }