Ejemplo n.º 1
0
        private double[,] ComputeCorrelationMatrix(List<double>[] ListValueDesc)
        {
            int NumDesc = ListValueDesc.Length;
            double[,] CorrelationMatrix = new double[NumDesc, NumDesc];

            if (GlobalInfo.OptionsWindow.radioButtonMIC.Checked)
            {
                double[][] dataset1 = new double[NumDesc][];
                string[] VarNames = new string[NumDesc];

                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                {
                    dataset1[iDesc] = new double[ListValueDesc[iDesc].Count];

                    Array.Copy(ListValueDesc[iDesc].ToArray(), dataset1[iDesc], ListValueDesc[iDesc].Count);
                    VarNames[iDesc] = iDesc.ToString();
                }
                data.Dataset data1 = new data.Dataset(dataset1, VarNames, 0);
                VarPairQueue Qu = new VarPairQueue(data1);

                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                    for (int jDesc = 0; jDesc < NumDesc; jDesc++)
                    {
                        Qu.addPair(iDesc, jDesc);
                    }

                Analysis ana = new Analysis(data1, Qu);
                AnalysisParameters param = new AnalysisParameters();
                double resparam = param.commonValsThreshold;

                analysis.results.FullResult Full = new analysis.results.FullResult();
                //List<analysis.results.BriefResult> Brief = new List<analysis.results.BriefResult>();
                analysis.results.BriefResult Brief = new analysis.results.BriefResult();

                java.lang.Class t = java.lang.Class.forName("analysis.results.BriefResult");

                //java.lang.Class restype = null;
                ana.analyzePairs(t, param);

                //   object o =  (ana.varPairQueue().peek());
                //   ana.getClass();
                //  int resNum = ana.numResults();
                analysis.results.Result[] res = ana.getSortedResults();
                //  double main = res[0].getMainScore();
                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                    for (int jDesc = 0; jDesc < NumDesc; jDesc++)
                    {
                        int X = int.Parse(res[jDesc + iDesc * NumDesc].getXVar());
                        int Y = int.Parse(res[jDesc + iDesc * NumDesc].getYVar());
                        CorrelationMatrix[X, Y] = res[jDesc + iDesc * NumDesc].getMainScore();

                    }
            }
            else
            {

                //return null;
                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                    for (int jDesc = 0; jDesc < NumDesc; jDesc++)
                    {
                        try
                        {
                            if (GlobalInfo.OptionsWindow.radioButtonPearson.Checked)
                                CorrelationMatrix[iDesc, jDesc] = (alglib.pearsoncorr2(ListValueDesc[iDesc].ToArray(), ListValueDesc[jDesc].ToArray()));
                            else if (GlobalInfo.OptionsWindow.radioButtonSpearman.Checked)
                                CorrelationMatrix[iDesc, jDesc] = (alglib.spearmancorr2(ListValueDesc[iDesc].ToArray(), ListValueDesc[jDesc].ToArray()));

                        }
                        catch
                        {
                            //Console.WriteLine("Input string is not a sequence of digits.");
                            return null;
                        }

                    }
            }
            return CorrelationMatrix;
        }
Ejemplo n.º 2
0
        public void DisplayMINE(List<double>[] ListValueDesc)
        {
            int NumDesc = ListValueDesc.Length;

            double[,] CorrelationMatrix = new double[NumDesc, NumDesc];

            double[][] dataset1 = new double[NumDesc][];
            string[] VarNames = new string[NumDesc];

            for (int iDesc = 0; iDesc < NumDesc; iDesc++)
            {
                dataset1[iDesc] = new double[ListValueDesc[iDesc].Count];

                Array.Copy(ListValueDesc[iDesc].ToArray(), dataset1[iDesc], ListValueDesc[iDesc].Count);
                VarNames[iDesc] = iDesc.ToString();
            }
            data.Dataset data1 = new data.Dataset(dataset1, VarNames, 0);
            VarPairQueue Qu = new VarPairQueue(data1);

            for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                for (int jDesc = 0; jDesc < iDesc; jDesc++)
                {
                    Qu.addPair(iDesc, jDesc);
                }
            Analysis ana = new Analysis(data1, Qu);
            AnalysisParameters param = new AnalysisParameters();
            double resparam = param.commonValsThreshold;

            //    analysis.results.FullResult Full = new analysis.results.FullResult();
            //List<analysis.results.BriefResult> Brief = new List<analysis.results.BriefResult>();
            //analysis.results.BriefResult Brief = new analysis.results.BriefResult();

            java.lang.Class t = java.lang.Class.forName("analysis.results.BriefResult");

            //java.lang.Class restype = null;
            ana.analyzePairs(t, param);

            //   object o =  (ana.varPairQueue().peek());
            //   ana.getClass();
            //  int resNum = ana.numResults();
            analysis.results.Result[] res = ana.getSortedResults();

            List<string[]> ListValues = new List<string[]>();
            List<string> NameX = CompleteScreening.ListDescriptors.GetListNameActives();

            List<bool> ListIscolor = new List<bool>();

            for (int Idx = 0; Idx < res.Length; Idx++)
            {
                ListValues.Add(res[Idx].toString().Split(','));
                ListValues[Idx][0] = NameX[int.Parse(ListValues[Idx][0])];
                ListValues[Idx][1] = NameX[int.Parse(ListValues[Idx][1])];
            }
            string[] ListNames = res[0].getHeader().Split(',');

            ListNames[0] = "Descriptor A";
            ListNames[1] = "Descriptor B";

            for (int NIdx = 0; NIdx < ListNames.Length; NIdx++)
            {
                if (NIdx == 0) ListIscolor.Add(false);
                else if (NIdx == 1) ListIscolor.Add(false);
                else ListIscolor.Add(true);

            }

            cDisplayTable DisplayForTable = new cDisplayTable("MINE Analysis results", ListNames, ListValues, GlobalInfo, true);
        }
Ejemplo n.º 3
0
        public void Run()
        {
            // define names
            string[] VarNames = new string[Input.Count];
            double[][] dataset = new double[Input.Count][];

            int Idx = 0;
            foreach (var item in Input)
            {
                dataset[Idx] = new double[item.Count];
                Array.Copy(item.ToArray(), dataset[Idx], item.Count);
                VarNames[Idx++] = item.Name;
            }

            //// define data
            data.Dataset data_Set = new data.Dataset(dataset, VarNames, 0);
            analysis.VarPairQueue Qu = new analysis.VarPairQueue(data_Set);

            for(int Idx_0=0;Idx_0<this.Input.Count;Idx_0++)
                for (int Idx_1 = 0; Idx_1 <= Idx_0; Idx_1++)
                    Qu.addPair(Idx_1,Idx_0);

            Analysis ana = new Analysis(data_Set, Qu);
            AnalysisParameters param = new AnalysisParameters();
            double resparam = param.commonValsThreshold;

            java.lang.Class t = java.lang.Class.forName("analysis.results.FullResult");

            if(this.Is_BriefReport)
                t = java.lang.Class.forName("analysis.results.BriefResult");

            ana.analyzePairs(t, param);
            analysis.results.Result[] res = ana.getSortedResults();

            List<string[]> ListValues = new List<string[]>();
            List<bool> ListIscolor = new List<bool>();

            for (Idx = 0; Idx < res.Length; Idx++)
            {
                ListValues.Add(res[Idx].toString().Split(','));
            }
            string[] ListNames = res[0].getHeader().Split(',');

            this.Output = new cListExtendedTable();

            for (int IdxTest = 2; IdxTest < ListNames.Length; IdxTest++)    // loop over all the different type of results
            {
                // remove useless informations
                if (ListNames[IdxTest] == "MI via KDE") continue;
                if (ListNames[IdxTest] == "Fisher") continue;
                if (ListNames[IdxTest] == "last value") continue;
                if (ListNames[IdxTest] == "MAS found at (X)") continue;
                if (ListNames[IdxTest] == "MAS found at (Y)") continue;
                if (ListNames[IdxTest] == "MICfound at (Y)") continue;

                double[,] TmpTable = new double[VarNames.Length, VarNames.Length];

                for (int i = 0; i < res.Length; i++)    // loop over the different pairs
                {
                    string TmpName0 = res[i].getXVar();
                    string TmpName1 = res[i].getYVar();
                    int Idx_var0 = 0;
                    int Idx_var1 = 0;

                    for (Idx_var0 = 0; Idx_var0 < VarNames.Length; Idx_var0++)
                        if(VarNames[Idx_var0]==TmpName0)
                            break;

                    for (Idx_var1 = 0; Idx_var1 < VarNames.Length; Idx_var1++)
                        if (VarNames[Idx_var1] == TmpName1)
                            break;

                    double Value=0;
                    double.TryParse(res[i].toString().Split(',')[IdxTest], out Value);
                    TmpTable[Idx_var0, Idx_var1] = TmpTable[Idx_var1, Idx_var0] = Value;
                }

                cExtendedTable NewTable = new cExtendedTable(TmpTable);
                NewTable.ListRowNames = new List<string>();
                for (int i = 0; i < VarNames.Length; i++)
                {
                    NewTable.ListRowNames.Add(VarNames[i]);
                    NewTable[i].Name = VarNames[i];

                    if (CurrentScreening != null)
                    {
                        int IdxDesc = cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(NewTable[i].Name);
                        if (IdxDesc > -1)
                        {
                            NewTable[i].Tag = cGlobalInfo.CurrentScreening.ListDescriptors[IdxDesc];
                        }
                    }

                }

                NewTable.Name = ListNames[IdxTest];
                this.Output.Add(NewTable);
            }
        }