internal MetaResults GetMetaResults() { var metaData = new MetaResults(); if (_meta != null) { metaData = GetMetaResults(_meta); } return(metaData); }
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); }
/// <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); }
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); }
/// <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); }
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); }
/* * 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); }
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(); }
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; }
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; }
internal MetaResults GetMetaResults() { var metaData = new MetaResults(); if (_meta != null) { metaData = GetMetaResults(_meta); } return metaData; }