00001
00002
00003
00004 #ifndef PGSCORE
00005 #define PGSCORE
00006
00007 #include "pointgroup.hh"
00008 #include "setscores.hh"
00009 #include "scsignificance.hh"
00010
00011 namespace scala
00012 {
00013
00014 class PGscore : public CCtbxSym::PointGroup
00015
00016 {
00017 public:
00018 PGscore(){};
00019 PGscore(const CCtbxSym::PointGroup& PGin);
00020
00021 void SetScore(const SetScores& SGscore);
00022
00023 void SetCC(const SCsignificance& sfor, const SCsignificance& sagainst);
00024 void SetMSD(const SCsignificance& sfor, const SCsignificance& sagainst);
00025 void SetRfactor(const Rfactor& rfor, const Rfactor& ragainst);
00026
00027
00028 void StoreCCfor(const SCsignificance& sig);
00029 void StoreCCagainst(const SCsignificance& sig);
00030 void SetCCTrueScore(const double& CCTrue) {CCTrueScore = CCTrue;}
00031
00032
00033 void AddAveragedZCCfor(const double& CZfor);
00034 void AddAveragedZCCagainst(const double& CZagainst);
00035 void CalcAver() const;
00036
00037 float CC_Zfor() const {return CCsig_for.Z();}
00038 float CC_Zagainst() const {return CCsig_against.Z();}
00039 float CC_Zgain() const {return CC_NetZ;}
00040
00041 float MSD_Zfor() const {return MSDsig_for.Z();}
00042 float MSD_Zagainst() const {return MSDsig_against.Z();}
00043 float MSD_Zgain() const {return MSD_NetZ;}
00044
00045 float CC_Zafor() const {CalcAver(); return AveragedZCCfor;}
00046 float CC_Zaagainst() const {CalcAver(); return AveragedZCCagainst;}
00047 float CC_Zagain() const {CalcAver(); return AveragedZCCnet;}
00048
00049 SCsignificance CC_against() const {return CCsig_against;}
00050 Rfactor Rfactor_against() const {return Ragainst;}
00051
00052
00053 void SetLikelihood(const double& Likelihood) {likelihood = Likelihood;}
00054
00055 double Likelihood() const {return likelihood;}
00056
00057 void CalcLikelihood();
00058
00059 void SetConfidence(const double& ConfidenceValue) {confidence = ConfidenceValue;}
00060 double Confidence() const {return confidence;}
00061
00062 correl_coeff OverallCC() const {return score.OverallCC();}
00063 Rfactor OverallRfactor() const {return score.OverallRfactor();}
00064
00065 void SetAccept(bool accept=true) {accepted=accept;}
00066 bool Accepted() const {return accepted;}
00067
00068 void SetOrig(const bool& origflag) {original = origflag;}
00069 bool Original() const {return original;}
00070
00071 static double CCSDmin() {return SDmin;}
00072
00073 friend bool operator < (const PGscore& a,const PGscore& b)
00074
00075 {return (a.likelihood < b.likelihood);}
00076
00077
00078
00079
00080
00083
00084
00085 private:
00086 static double SDmin;
00087 double CCTrueScore;
00088 double likelihood;
00089 SetScores score;
00090
00091 SCsignificance CCsig_for;
00092 SCsignificance CCsig_against;
00093 std::vector<SCsignificance> CCsig_for_list;
00094 std::vector<SCsignificance> CCsig_against_list;
00095
00096 SCsignificance MSDsig_for;
00097 SCsignificance MSDsig_against;
00098 float CC_NetZ, MSD_NetZ;
00099
00100 mutable double AveragedZCCfor;
00101 mutable double AveragedZCCagainst;
00102 mutable double AveragedZCCnet;
00103 int NAveragedZCCfor;
00104 int NAveragedZCCagainst;
00105 mutable bool AverCalculated;
00106
00107 Rfactor Rfor;
00108 Rfactor Ragainst;
00109 bool accepted;
00110 bool original;
00111 double confidence;
00112 };
00113
00114
00115 class PGcompareOrder
00116 {
00117 public:
00118 bool operator()(const CCtbxSym::PointGroup pg1,
00119 const CCtbxSym::PointGroup pg2)
00124 {
00125 bool Order = true;
00126 if (pg1.OrderValue() == pg2.OrderValue())
00127 {
00128
00129 Order = (pg1.Delta() < pg2.Delta());
00130 }
00131 else
00132 {
00133 Order = (pg1.OrderValue() > pg2.OrderValue());
00134 }
00135 return Order;
00136 }
00137 };
00138
00139 class Solution
00140
00141 {
00142 public:
00143 Solution(){}
00144 Solution(const int& Index,
00145 const std::string& Groupname,
00146 const bool& SGorPG,
00147 const ReindexOp& Reindex,
00148 const double& TotalProb,
00149 const double& Confidence
00150 );
00151
00152
00153 int Index() const {return index;}
00154 std::string Name() const {return name;}
00155 bool SpaceOrPointGroup() const {return spaceorpointgroup;}
00156 ReindexOp Reindex() const {return reindex;}
00157 double TotalProb() const {return totprob;}
00158 double Confidence() const {return confidence;}
00159
00160 private:
00161 int index;
00162 std::string name;
00163 bool spaceorpointgroup;
00164 ReindexOp reindex;
00165 double totprob;
00166 double confidence;
00167 };
00168 }
00169 #endif