public static Quickscore <Hla, int> CreateQuickscore(string fileName, string header, double causePrior, double linkProbability, double leakProbability, HlaResolution hlaResolution) { Qmrr.HlaFactory hlaFactory = Qmrr.HlaFactory.GetFactory("noConstraint"); Quickscore <Hla, int> quickscore = Quickscore <Hla, int> .GetInstance(hlaFactory.GetGroundInstance("")); foreach (Dictionary <string, string> row in QuickScoreOptimalsTable(fileName, header)) { foreach (string column in CreateHlaColumns(header)) { Hla hla = GetHlaValue(row, column, hlaResolution); int patient = GetPatient(row); quickscore.SetCause(hla, causePrior); quickscore.SetLeak(patient, leakProbability); quickscore.SetLink(hla, patient, linkProbability); } } return(quickscore); }
//double ScoreWithNewParameters(Dictionary<string, SearchHlaAssignmentsResult> peptideToResults, int iParameter, double parameter) //{ // double totalLogLikelihood = 0.0; // Quickscore<string, int> quickScore = null; // foreach (SearchHlaAssignmentsResult searchHlaAssignmentsResult in peptideToResults.Values) // { // //!!!don't create these structures from scratch on every call // //!!!don't create a whole new quickscore // if (quickScore == null) // { // quickScore = CloneQuickScoreWithNewParameter(searchHlaAssignmentsResult.Quickscore, iParameter, parameter); // } // HlaAssignmentWithResponses hlaAssignment = searchHlaAssignmentsResult.BestLogLikelihoodSoFar.Champ; // totalLogLikelihood += // //!!!speed up: don't compute whole loglikelihood - only part that changes with the parameters // quickScore.LogLikelihoodOfModelWithCompleteAssignments( // searchHlaAssignmentsResult.PatientsWhoRespond, // searchHlaAssignmentsResult.PatientsWhoDoNotRespond, // hlaAssignment.AsDictionary, searchHlaAssignmentsResult.PatientWeightTableOrNull); // } // return totalLogLikelihood; //} //double ScoreWithNewParameters(Dictionary<string, SearchHlaAssignmentsResult> peptideToResults, int iParameter, double parameter) //{ // Quickscore<string, int> quickScore = CloneQuickScoreWithNewParameter(searchHlaAssignmentsResult.Quickscore, iParameter, parameter); // double totalLogLiklihood = ScoreModelAgainstPeptideSolutions(peptideToResults, quickScore); // return totalLogLiklihood; //} //private static double ScoreModelAgainstPeptideSolutions(Dictionary<string, SearchHlaAssignmentsResult> peptideToResults, Quickscore<string, int> quickScore) //{ // double totalLogLiklihood = 0.0; // foreach (SearchHlaAssignmentsResult searchHlaAssignmentsResult in peptideToResults.Values) // { // //!!!don't create these structures from scratch on every call // //!!!don't create a whole new quickscore // HlaAssignment hlaAssignment = searchHlaAssignmentsResult.BestLogLikelihoodSoFar.Champ; // totalLogLiklihood += // //!!!speed up: don't compute whole loglikelihood - only part that changes with the parameters // quickScore.LogLikelihoodOfModelWithCompleteAssignments( // searchHlaAssignmentsResult.PatientsWhoRespond, // searchHlaAssignmentsResult.PatientsWhoDoNotRespond, // hlaAssignment.AsDictionary, searchHlaAssignmentsResult.PatientWeightTableOrNull); // } // return totalLogLiklihood; //} private Quickscore <string, int> CloneQuickScoreWithNewParameter(Quickscore <string, int> quickscoreIn, int iParameter, double parameter) { double causePrior = CausePrior; double linkProbability = LinkProbability; double leakProbability = LeakProbability; switch (iParameter) { case 0: causePrior = parameter; break; case 1: linkProbability = parameter; break; case 2: leakProbability = parameter; break; default: SpecialFunctions.CheckCondition(false); break; } Quickscore <string, int> quickscoreOut = Quickscore <string, int> .GetInstance(""); foreach (string cause in quickscoreIn.CauseList()) { quickscoreOut.SetCause(cause, causePrior); foreach (int effect in quickscoreIn.EffectListForCause(cause)) { quickscoreOut.SetLink(cause, effect, linkProbability); quickscoreOut.SetLeak(effect, leakProbability); } } return(quickscoreOut); }