コード例 #1
0
        override protected double LogLikelihoodOfEffects(QmrrPartialModel qmrrPartialModel, TrueCollection trueCollection, OptimizationParameterList qmrrParams)
        {
            Set <Hla> trueCollectionAsSet = trueCollection.CreateHlaAssignmentAsSet();

            double logOneLessLeakProbability = Math.Log(1.0 - qmrrParams["leakProbability"].Value);

            Dictionary <Hla, double> hlaToLogOneLessLink = new Dictionary <Hla, double>();

            foreach (Hla hla in trueCollectionAsSet)
            {
                double logOneLessLink = Math.Log(1.0 - qmrrParams["link" + hla].Value);
                hlaToLogOneLessLink.Add(hla, logOneLessLink);
            }


            double logLikelihood = 0.0;

            foreach (KeyValuePair <string, Set <Hla> > patientAndHlaList in qmrrPartialModel.PatientList)
            {
                double logLikelihoodNoReactionInThisPatient = logOneLessLeakProbability;
                foreach (Hla hla in patientAndHlaList.Value)
                {
                    if (trueCollectionAsSet.Contains(hla))
                    {
                        double logOneLessLink = hlaToLogOneLessLink[hla];
                        logLikelihoodNoReactionInThisPatient += logOneLessLink;
                    }
                }

                bool didReact = qmrrPartialModel.PatientToAnyReaction.ContainsKey(patientAndHlaList.Key);
                logLikelihood += LogLikelihoodOfThisPatient(logLikelihoodNoReactionInThisPatient, didReact);
            }

            return(logLikelihood);
        }
コード例 #2
0
        private double LogLikelihoodOfCompleteModelConditionedOnKnownHlas(QmrrPartialModel qmrrPartialModel, TrueCollection trueCollection, OptimizationParameterList qmrrParams)
        {
            Set <Hla> trueHlaSet            = trueCollection.CreateHlaAssignmentAsSet();
            int       reactionsCoveredCount = CountReactionsCovered(qmrrPartialModel, trueHlaSet);

            SpecialFunctions.CheckCondition(reactionsCoveredCount < 1000);
            int trueCount = trueCollection.Count;

            SpecialFunctions.CheckCondition(trueCount < 1000);
            int falseCount = qmrrPartialModel.HlaList.Count - trueCollection.Count;

            SpecialFunctions.CheckCondition(falseCount < 1000);
            string llAsString    = string.Format("{0:000}.{1:000}{2:000}", reactionsCoveredCount, falseCount, trueCount);
            double logLikelihood = double.Parse(llAsString);

            return(logLikelihood);
        }
コード例 #3
0
        virtual protected double LogLikelihoodOfEffects(QmrrPartialModel qmrrPartialModel, TrueCollection trueCollection, OptimizationParameterList qmrrParams)
        {
            double logOneLessLink            = Math.Log(1.0 - qmrrParams["link"].Value);
            double logOneLessLeakProbability = Math.Log(1.0 - qmrrParams["leakProbability"].Value);

            double logLikelihood = 0.0;

            Set <Hla> trueCollectionAsSet = trueCollection.CreateHlaAssignmentAsSet();

            foreach (KeyValuePair <string, Set <Hla> > patientAndHlaList in qmrrPartialModel.PatientList)
            {
                double logLikelihoodNoReactionInThisPatient =
                    logOneLessLeakProbability
                    + NumberOfPositiveHlas(patientAndHlaList.Value, trueCollectionAsSet) * logOneLessLink;
                bool didReact = qmrrPartialModel.PatientToAnyReaction.ContainsKey(patientAndHlaList.Key);
                logLikelihood += LogLikelihoodOfThisPatient(logLikelihoodNoReactionInThisPatient, didReact);
            }

            return(logLikelihood);
        }