Esempio n. 1
0
        internal MetaResults GetMetaResults()
        {
            var metaData = new MetaResults();

            if (_meta != null)
            {
                metaData = GetMetaResults(_meta);
            }

            return(metaData);
        }
Esempio n. 2
0
        internal MetaResults GetMetaResults(JObject meta)
        {
            var metaData = new MetaResults();

            if (meta["results"] != null)
            {
                metaData.Limit = (int)meta["results"]["limit"];
                metaData.Skip  = (int)meta["results"]["skip"];
                metaData.Total = (int)meta["results"]["total"];
            }

            return(metaData);
        }
Esempio n. 3
0
            /// <summary>
            ///     Converts JSON Data
            /// </summary>
            /// <param name="jsondata">JSON Data as Object</param>
            /// <returns>Meta Results Data Object</returns>
            /// <remarks></remarks>
            public static MetaResults CnvJsonData(JObject jsondata)
            {
                var metaData = new MetaResults();
                var obj      = jsondata.GetValue("meta");

                if (obj["results"] != null)
                {
                    metaData.Limit = (int)obj["results"]["limit"];
                    metaData.Skip  = (int)obj["results"]["skip"];
                    metaData.Total = (int)obj["results"]["total"];
                }

                return(metaData);
            }
Esempio n. 4
0
        internal MetaResults GetMetaResults(string searchResults)
        {
            var metaData = new MetaResults();

            if (!string.IsNullOrEmpty(searchResults))
            {
                var jo   = JObject.Parse(searchResults);
                var meta = (JObject)(jo.GetValue("meta"));

                metaData = GetMetaResults(meta);
            }

            return(metaData);
        }
Esempio n. 5
0
            /// <summary>
            ///     Converts JSON Data
            /// </summary>
            /// <param name="jsondata">JSON Data as String</param>
            /// <returns>Meta Results Data Object</returns>
            /// <remarks></remarks>
            public static MetaResults CnvJsonData(string jsondata)
            {
                MetaResults result = null;

                if (string.IsNullOrEmpty(jsondata))
                {
                    result = new MetaResults();
                }
                else
                {
                    var jo = JObject.Parse(jsondata);
                    result = CnvJsonData(jo);
                }

                return(result);
            }
Esempio n. 6
0
        public static void WriteMetaResultsJSONFile(
            MetaResults metaResults,
            string wantedFileName = "")
        {
            string output = JsonConvert.SerializeObject(metaResults, Formatting.Indented);

            //Choose the name
            string fileName = "";

            if (wantedFileName != "")
            {
                fileName = wantedFileName;
            }
            else
            {
                fileName = $"metaResults_{metaResults.bestInfos.TimeStamp.ToString("yyyy-MM-dd_HH-mm-ss")}.json";
            }
            File.WriteAllText(ConfigurationManager.Instance.config.ResultsFolder + fileName, output);
        }
Esempio n. 7
0
        /*
         * public static MetaResults MetaEvaluate(DiseasesData PredictionData, DiseasesData RealData, Tuple<TFType, IDFType> WeightCombinaison, double minWeight, double maxWeight, double step, Criterion criterion)
         * {
         *  //Create MetaResult
         *  MetaResults metaResults = new MetaResults(WeightCombinaison.Item1, WeightCombinaison.Item2);
         *
         *  //Compute all results and put them in metaResults
         *  List<Results> listResults = new List<Results>();
         *  for (double i = minWeight; i <= maxWeight; i+=step)
         *  {
         *      Results currentRes = Evaluate(PredictionData, RealData, WeightCombinaison, i);
         *      listResults.Add(currentRes);
         *      metaResults.perThreshold.Add(
         *          new PerThreshold(
         *              i,
         *              currentRes.general.Type,
         *              currentRes.general.RealPositives,
         *              currentRes.general.FalsePositives,
         *              currentRes.general.FalseNegatives,
         *              currentRes.general.Precision,
         *              currentRes.general.Recall,
         *              currentRes.general.F_Score
         *              ));
         *  }
         *
         *  //Find best results
         *  Results Best_Result;
         *  switch (criterion)
         *  {
         *      case Criterion.F_Score:
         *          Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.F_Score > savedRes.general.F_Score ? currentRes : savedRes);
         *          break;
         *      case Criterion.Precision:
         *          Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.Precision > savedRes.general.Precision ? currentRes : savedRes);
         *          break;
         *      case Criterion.Recall:
         *          Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.Recall > savedRes.general.Recall ? currentRes : savedRes);
         *          break;
         *      default:
         *          Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.F_Score > savedRes.general.F_Score ? currentRes : savedRes);
         *          break;
         *  }
         *
         *  //Complete metaResults
         *  metaResults.bestInfos = new BestInfos(
         *          Best_Result.general.TimeStamp,
         *          Best_Result.general.Type,
         *          Best_Result.general.Threshold,
         *          Best_Result.general.Precision,
         *          Best_Result.general.Recall,
         *          Best_Result.general.F_Score,
         *          criterion
         *      );
         *
         *  return metaResults;
         * }*/

        public static MetaResults MetaEvaluate(DiseasesData PredictionData, DiseasesData RealData, Criterion criterion, params Tuple <TFType, IDFType>[] WeightCombinaisons)
        {
            //Create MetaResult
            MetaResults metaResults = new MetaResults();

            //Compute all results and put them in metaResults
            List <Results> listResults = new List <Results>();

            //If not precised, we generate
            if (WeightCombinaisons.Length == 0)
            {
                WeightCombinaisons = GenerateDisctinctsTupleForWeightComputation().ToArray();
            }

            foreach (var tuple in WeightCombinaisons)
            {
                Results currentRes = Evaluate(PredictionData, RealData, tuple);
                listResults.Add(currentRes);
                metaResults.perCombinaison.Add(
                    new PerCombinaison(
                        currentRes.general.TimeStamp,
                        currentRes.general.NumberOfDiseasesWithKnownPhenotypes,
                        currentRes.general.NumberOfDiseasesWithPublicationsInPredictionData,
                        currentRes.general.NumberOfDiseasesEvaluatedForReal,
                        currentRes.general.Type,
                        currentRes.general.MeanNumberOfRelatedEntitiesFound,
                        currentRes.general.StandardDeviationNumberOfRelatedEntitiesFound,
                        currentRes.general.TFType,
                        currentRes.general.IDFType,
                        currentRes.general.RealPositives,
                        currentRes.general.FalsePositives,
                        currentRes.general.FalseNegatives,
                        currentRes.general.Precision,
                        currentRes.general.Recall,
                        currentRes.general.F_Score,
                        currentRes.general.MeanRankRealPositives,
                        currentRes.general.StandardDeviationRankRealPositivesGeneral,
                        criterion
                        ));
            }

            //Find best results and sort by perCombinaison
            Results Best_Result;

            switch (criterion)
            {
            case Criterion.MeanRankRealPositives:
                Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.MeanRankRealPositives < savedRes.general.MeanRankRealPositives ? currentRes : savedRes);
                metaResults.perCombinaison = metaResults.perCombinaison.OrderBy(pc => pc.MeanRankRealPositives).ToList();
                break;

            case Criterion.F_Score:
                Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.F_Score > savedRes.general.F_Score ? currentRes : savedRes);
                metaResults.perCombinaison = metaResults.perCombinaison.OrderByDescending(pc => pc.F_Score).ToList();
                break;

            case Criterion.Precision:
                Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.Precision > savedRes.general.Precision ? currentRes : savedRes);
                metaResults.perCombinaison = metaResults.perCombinaison.OrderByDescending(pc => pc.Precision).ToList();
                break;

            case Criterion.Recall:
                Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.Recall > savedRes.general.Recall ? currentRes : savedRes);
                metaResults.perCombinaison = metaResults.perCombinaison.OrderByDescending(pc => pc.Recall).ToList();
                break;

            default:
                Best_Result = listResults.Aggregate((savedRes, currentRes) => currentRes.general.MeanRankRealPositives < savedRes.general.MeanRankRealPositives ? currentRes : savedRes);
                metaResults.perCombinaison = metaResults.perCombinaison.OrderBy(pc => pc.MeanRankRealPositives).ToList();
                break;
            }

            //Complete metaResults
            metaResults.bestInfos = new BestInfos(
                Best_Result.general.TimeStamp,
                Best_Result.general.NumberOfDiseasesWithKnownPhenotypes,
                Best_Result.general.NumberOfDiseasesWithPublicationsInPredictionData,
                Best_Result.general.NumberOfDiseasesEvaluatedForReal,
                Best_Result.general.Type,
                Best_Result.general.MeanNumberOfRelatedEntitiesFound,
                Best_Result.general.StandardDeviationNumberOfRelatedEntitiesFound,
                Best_Result.general.TFType,
                Best_Result.general.IDFType,
                Best_Result.general.RealPositives,
                Best_Result.general.FalsePositives,
                Best_Result.general.FalseNegatives,
                Best_Result.general.Precision,
                Best_Result.general.Recall,
                Best_Result.general.F_Score,
                Best_Result.general.MeanRankRealPositives,
                Best_Result.general.StandardDeviationRankRealPositivesGeneral,
                criterion
                );

            return(metaResults);
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            //Environnement variables
            //Environment.SetEnvironmentVariable("RD_AGGREGATOR_SETTINGS", @"C:\Users\Psycho\Source\Repos\RDSearch4\settings.json");
            Environment.SetEnvironmentVariable("RD_AGGREGATOR_SETTINGS", @"C:\Users\CharlesCOUSYN\source\repos\Aggregator\settings.json");
            var path = Environment.GetEnvironmentVariable("RD_AGGREGATOR_SETTINGS");

            ConfigurationManager.Instance.Init(path);

            //Obtain all symptoms/phenotypes
            PhenotypeEngine phenotypeEngine = new PhenotypeEngine();

            phenotypeEngine.GetSymptomsList();

            /*
             * //TESTED AND DONE
             * //Update Orphanet (diseases/real datasets)
             * OrphaEngine orphaEngine = new OrphaEngine(phenotypeEngine);
             * orphaEngine.Start();*/



            //Retrieving diseases from DB
            List <Disease> lst_diseases = new List <Disease>();

            using (var db = new MongoRepository.DiseaseRepository())
            {
                //lst_diseases = db.selectAll().Take(50).ToList();
                lst_diseases = db.selectAll();
            }


            //TESTED AND DONE

            /*
             * //Update Publications
             * PubmedEngine pubmedEngine = new PubmedEngine();
             * Console.WriteLine("Starting requests at PMC this can take some time...");
             * pubmedEngine.Start2(lst_diseases);
             */

            /*
             * //Update number of publications per disease
             * Console.WriteLine("Update number of publications per disease.....");
             * using (var dbDisease = new MongoRepository.DiseaseRepository())
             * using (var dbPublication = new MongoRepository.PublicationRepository())
             * {
             *  //Update all diseases
             *  foreach (var disease in lst_diseases)
             *  {
             *      long numberPublications = dbPublication.countForOneDisease(disease.OrphaNumber);
             *      disease.NumberOfPublications = (int)numberPublications;
             *      dbDisease.updateDisease(disease);
             *  }
             * }
             * Console.WriteLine("Update number of publications per disease finished");
             */


            //Retrieving related entities by disease AND TextMine

            /*
             * TextMiningEngine textMiningEngine = new TextMiningEngine(phenotypeEngine);
             * RecupSymptomsAndTextMine(lst_diseases, textMiningEngine);*/


            //Retrieving PredictionData and RealData from DB (DiseasesData with type Symptom)
            DiseasesData PredictionData = null;
            DiseasesData RealData       = null;

            using (var dbPred = new MongoRepository.PredictionDataRepository())
                using (var dbReal = new MongoRepository.RealDataRepository())
                {
                    PredictionData = dbPred.selectByType(type.Symptom);
                    RealData       = dbReal.selectByType(type.Symptom);
                }


            //Evaluation...
            if (PredictionData != null && RealData != null)
            {
                Console.WriteLine("Evaluation....");

                //Testing all combinaisons
                MetaResults metaResults = Evaluator.MetaEvaluate(PredictionData, RealData, Evaluation.entities.Criterion.MeanRankRealPositives);
                Evaluator.WriteMetaResultsJSONFile(metaResults);

                //Having best combinaison and evaluate with it
                Tuple <TFType, IDFType> tupleToTest = new Tuple <TFType, IDFType>(metaResults.bestInfos.TFType, metaResults.bestInfos.IDFType);

                //Evaluate basically
                Results resultsOfBestCombinaison = Evaluator.Evaluate(PredictionData, RealData, tupleToTest);
                Evaluator.WriteResultsJSONFile(resultsOfBestCombinaison);

                //Evaluate best combinaison with threshold search
                MetaResultsWeight metaResultsWeight = Evaluator.MetaWeightEvaluate(PredictionData, RealData, tupleToTest, 0.0005, Evaluation.entities.Criterion.F_Score);
                Evaluator.WriteMetaResultsWeightJSONFile(metaResultsWeight);

                Console.WriteLine("Evaluation finished!");
            }


            Console.WriteLine("Finished :)");
            Console.ReadLine();
        }
Esempio n. 9
0
        internal MetaResults GetMetaResults(JObject meta)
        {
            var metaData = new MetaResults();

            if (meta["results"] != null)
            {
                metaData.Limit = (int) meta["results"]["limit"];
                metaData.Skip = (int) meta["results"]["skip"];
                metaData.Total = (int) meta["results"]["total"];
            }

            return metaData;
        }
Esempio n. 10
0
        internal MetaResults GetMetaResults(string searchResults)
        {
            var metaData = new MetaResults();

            if (!string.IsNullOrEmpty(searchResults))
            {
                var jo = JObject.Parse(searchResults);
                var meta = (JObject) (jo.GetValue("meta"));

                metaData = GetMetaResults(meta);
            }

            return metaData;
        }
Esempio n. 11
0
        internal MetaResults GetMetaResults()
        {
            var metaData = new MetaResults();

            if (_meta != null)
            {
                metaData = GetMetaResults(_meta);
            }

            return metaData;
        }