(!
in||
in==
this)
return;
106 if(!
in||
in==
this)
return;
132 for(
i= 0;
i< SizeIn; ++
i)
153 if(SameDirection) j =
i;
154 elsej = Other->
GetSize() -
i- 1;
173TIonSeriesMatchMap::iterator
i;
188 unsignedRealsize =
min(Size, Maxproductions);
207 SetMatchMap().insert(std::pair <int, CMSMatchedPeakSet * > (Key, retval));
311 if(FoundPeak && FoundPeak->
GetIntensity() > MinIntensity) {
379 unsignedLastIndex(
i);
382 if(
i!= LastIndex) {
384 for(j = LastIndex+1; j <
i; j++) {
389(
i- LastIndex )) * (j - LastIndex) ;
404MassIncrement = (
GetExpMass()/ChargeIn)/(Size+1);
406StartMass = (
GetExpMass()/ChargeIn)/(Size+1);
411StartIndex = LastIndex + 1;
418StartMass + MassIncrement * (j - StartIndex);
453 intNumTerminalMasses,
454 doubleProbDependent,
456 doubleToleranceAdjust
461TIonSeriesMatchMap::const_iterator
i;
467TMatchedPeakSet::const_iterator j;
483Mean += ProbDependent / NumUniqueMasses;
484 _TRACE(
"mean="<< Mean <<
" probdep="<< ProbDependent <<
" numunique="<< NumUniqueMasses);
489Mean += ProbTerminal / NumTerminalMasses;
498 returnexp(-Mean) * pow(Mean,
i) / exp(
MSLNGAMMA(
i+1));
504retval = exp(-Mean) * pow(Mean,
i) / exp(
MSLNGAMMA(
i+1));
505 if(TopHitProb != 1.0L) retval *= 1.0L - pow((1.0L-TopHitProb),
i);
512 doubleretval(0.0L), before(-1.0L), increment;
514 for(
i= 1;
i< 1000;
i++) {
518 if(increment <= MSDOUBLELIMIT && i > 10)
break;
520 if(retval == before)
break;
528 if(HitsIn <= 0)
return1.0L;
531 doubleretval(0.0L), increment, beforeincrement(0.0L);
533 for(
i= 0;
i< HitsIn;
i++) {
540 if(retval == 1.0L)
break;
541beforeincrement = increment;
547retval -= beforeincrement;
549retval = 1.0L - retval;
556 if(HitsIn <= 0)
return1.0L;
559 doubleretval(0.0L), increment, beforeretval(-1.0), beforeincrement(0.0L);
561 for(
i= 1;
i< HitsIn;
i++) {
570 if(retval == beforeretval)
break;
571beforeretval = retval;
572beforeincrement = increment;
577 if(retval == Normal) retval -= beforeincrement;
580retval = 1.0L - retval;
587 doubleAverage, StdDev, Perf(1.0L);
588 if(
GetM() != 0.0) {
589Average = (
GetM() *(
GetN()+1))/2.0;
590StdDev = sqrt(Average * (
GetN() -
GetM()) / 6.0);
592Perf = 0.5*(1.0 +
MSERF((
GetSum() - Average)/(StdDev*sqrt(2.0))));
607 return static_cast <int>(Mean/(
static_cast <double>(
GetHits())));
621StdDev += pow((
double)
GetHitInfo(
i).GetDelta() - Mean, 2.0);
623StdDev = pow((
double)StdDev/
GetHits(), 0.5);
624 return(
TMSMZ)StdDev;
information about a matched peak.
TMSNumber & SetNumber(void)
Set the ion series number.
const TMSNumber GetNumber(void) const
Get the ion series number.
const TMSMZ GetDelta(void) const
Get the mass delta.
const TMSIonSeries GetIonSeries(void) const
Get the ion type.
const TMSCharge GetCharge(void) const
Get the ion charge.
TMSCharge & SetCharge(void)
Set the ion charge.
TMSIonSeries & SetIonSeries(void)
Set the ion type.
static const int IsForwardSeries(EMSIonSeries Series)
is a particular series forward going?
const TMSIntensity GetIntensity(void) const
return the intensity of the peak
TMSMZ & SetMZ(void)
set the m/z value of the peak
TMSIntensity & SetIntensity(void)
set the intensity of the peak
static const int ChargeSeries2Key(TMSCharge Charge, TMSIonSeries Series)
convert a charge and series to a map key
const TIonSeriesMatchMap & GetMatchMap(void) const
Get the Map.
~CMSMatchedPeakSetMap()
d'tor
CMSMatchedPeakSet * CreateSeries(TMSCharge Charge, TMSIonSeries Series, int Size, int Maxproductions)
create a new ion series if the series exists and is the same size, it will reuse old array
CMSMatchedPeakSetMap(void)
c'tor
static const TMSIonSeries Key2Series(int Key)
convert a key into a series type
TIonSeriesMatchMap & SetMatchMap(void)
Set the Map.
static const TMSCharge Key2Charge(int Key)
convert a key into a charge
CMSMatchedPeakSet * SetSeries(TMSCharge Charge, TMSIonSeries Series)
get a series for modification
container for a set of matches
int & SetSize(void)
Set Size of ion series.
TMatchedPeakSet & SetMatchedPeakSet(void)
Set the match info.
virtual ~CMSMatchedPeakSet()
void Compare(CMSMatchedPeakSet *Other, bool SameDirection)
compare to another CMSMatchedPeakSet and set MatchType accordingly if there is a correlation
const int GetSize(void) const
Get Size of ion series.
const TMatchedPeakSet & GetMatchedPeakSet(void) const
Get the match info.
void DeleteMatchedPeakSet(void)
delete the MatchInfo array
virtual void CreateMatchedPeakSet(int SizeIn)
initialize the MatchInfo array delete any existing array
holds match of a spectrum peak to a theoretical m/z value
const EMSMatchType GetMatchType(void) const
Get the type of match.
const TMSExpIons GetExpIons() const
Get the exp ions per unit mass.
TMSMZ & SetMassTolerance(void)
Set the experimental mass tolerance of the peak.
const TMSMZ GetMassTolerance(void) const
Get the experimental mass tolerance of the peak.
TMSExpIons & SetExpIons()
Set the exp ions per unit mass.
virtual void Assign(CMSMatchedPeak *in)
virtual assignment operator
EMSMatchType & SetMatchType(void)
Set the type of match.
const double CalcPoissonMean(double ProbTerminal=0.0L, int NumTerminalMasses=2, double ProbDependent=0.0L, int NumUniqueMasses=19, double ToleranceAdjust=1.0L) const
calculate the mean value of the poisson distribution for this match
CMSBasicMatchedPeak & SetHitInfo(int n)
Set the hit info at array position n.
const int GetN(void) const
Get the number of experimental peaks.
const double CalcPoisson(double Mean, int i) const
calulate the poisson distribution
const TMSMZ GetExpMass(void) const
Get the experimental m/z of the spectrum.
CMSBasicMatchedPeak * HitInfo
list of matched peaks ideally, this would be an array of pointers to allow each element to be virtual...
void FillMatchedPeaks(TMSCharge ChargeIn, TMSIonSeries Series, unsigned Size, TMSIntensity MinIntensity, bool Skipb1, EMSTerminalBias TerminalIon, int Maxproductions, string &Sequence, bool NoProline)
copies hit array into match array fills in missing peaks does not fill in exp peak values.
const int GetSum(void) const
Get the sum of ranks.
virtual ~CMSSpectrumMatch()
d'tor
const double CalcPoissonTopHit(double Mean, int i, double TopHitProb) const
calculates the poisson times the top n hit probability
const double CalcPvalueTopHit(double Mean, int HitsIn, double Normal, double TopHitProb) const
calculate the p-value using poisson distribution and the top hit prob
const CMSMatchedPeakSetMap & GetIonSeriesMatchMap(void) const
get map from ion series to CMSMatchedPeakSet *
CMSMatchedPeakSetMap & SetIonSeriesMatchMap(void)
Set map from ion series to CMSMatchedPeakSet *.
const TMSMZ GetMeanDelta(void) const
Calc mean delta.
CMSBasicMatchedPeak * Find(TMSNumber Number, TMSCharge ChargeIn, TMSIonSeries Series)
find a peak within HitInfo
const TMSMZ GetStdDevDelta(void) const
Calc std dev of delta.
const int GetM(void) const
Get the number of matched peaks.
const CMSBasicMatchedPeak & GetHitInfo(int n) const
Get the hit info at array position n.
const int GetHits(void) const
return the size of the HitInfo array
const TMSMZ GetMaxDelta(void) const
calc max abs difference between experimental and theoretical mass values
const double CalcNormalTopHit(double Mean, double TopHitProb) const
integrate CalcPoissonTopHit over all i
void CreateHitInfo(void)
initialize the HitInfo array delete any existing array size is determined by GetHits()
const double CalcRankProb(void) const
calculate the rank score
CMSSpectrumMatch(void)
c'tor
const double CalcPvalue(double Mean, int HitsIn) const
calculate the p-value using poisson distribution
EMSTerminalBias
is the peptide statistically biased in any way on either end?
EMSIonSeries
enumeration of ion series
@ eMSMatchTypeTerminus
statistically biased terminal match
@ eMSMatchTypeIndependent
the match is statistically independent
@ eMSMatchTypeDependent
the match is statistically dependent
@ eMSMatchTypeSemiIndependent
the match is independent to first order
@ eMSMatchTypeNoSearch
the peak was not searched, e.g.
@ eMSMatchTypeUnknown
unknown if there is a match or not, i.e.
@ eMSMatchTypeNotTyped
there is a match but the type is unknown
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
std::istream & in(std::istream &in_, double &x_)
signed char TMSCharge
charge type
#define USING_OMSSA_SCOPE
short TMSNumber
ion sequence number, starting from 0.
signed char TMSIonSeries
ion type, e.g.
unsigned TMSIntensity
intensity type
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4