コード例 #1
0
        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);
        }
コード例 #2
0
        //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);
        }