mspeak.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:22k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: mspeak.hpp,v $
  4.  * PRODUCTION Revision 1000.3  2004/06/01 18:09:07  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.14
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: mspeak.hpp,v 1000.3 2004/06/01 18:09:07 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the authors in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Lewis Y. Geer
  35.  *
  36.  * File Description:
  37.  *    code to deal with spectra and m/z ladders
  38.  *
  39.  * ===========================================================================
  40.  */
  41. #ifndef MSPEAK__HPP
  42. #define MSPEAK__HPP
  43. #include <corelib/ncbimisc.hpp>
  44. #include <objects/omssa/omssa__.hpp>
  45. #include <set>
  46. #include <iostream>
  47. #include <vector>
  48. #include <deque>
  49. #include <map>
  50. #include <string.h>
  51. #include "msms.hpp"
  52. #include "msladder.hpp"
  53. BEGIN_NCBI_SCOPE
  54. BEGIN_SCOPE(objects)
  55. BEGIN_SCOPE(omssa)
  56. /////////////////////////////////////////////////////////////////////////////
  57. //
  58. //  CMSHit::
  59. //
  60. //  Used by CMSPeak class to hold hits
  61. //
  62. // forward declaration needed for CMSHitInfo
  63. class CMSPeak;
  64. // class for recording ion peak type
  65. class NCBI_XOMSSA_EXPORT CMSHitInfo {
  66. public:
  67.     char& SetCharge(void) { return Charge; }
  68.     const char GetCharge(void) { return Charge; }
  69.     char& SetIon(void) { return Ion; }
  70.     const char GetIon(void) { return Ion; }
  71.     short int& SetNumber(void) { return Number; }
  72.     const short  GetNumber(void) { return Number; }
  73.     short int& SetMod(void) { return Mod; }
  74.     const short GetMod(void) { return Mod; }
  75.     unsigned& SetIntensity(void) { return Intensity; }
  76.     const unsigned GetIntensity(void) { return Intensity; }
  77.     
  78. private:
  79.     char Charge, Ion;
  80.     short Number, Mod;
  81.     unsigned Intensity;
  82. };
  83. // typedef for holding hit information
  84. typedef AutoPtr <CMSHitInfo, ArrayDeleter<CMSHitInfo> > THitInfo;
  85. // class to contain preliminary hits.  memory footprint must be kept small.
  86. class CMSHit {
  87. public:
  88.     // tor's
  89.     CMSHit(void);
  90.     CMSHit(int StartIn, int StopIn, int IndexIn);
  91.     CMSHit(int StartIn, int StopIn, int IndexIn, int MassIn, int HitsIn,
  92.    int ChargeIn);
  93.     ~CMSHit();
  94.     // getter-setters
  95.     int GetStart(void);
  96.     void SetStart(int StartIn);
  97.     int GetStop(void);
  98.     void SetStop(int StopIn);
  99.     int GetSeqIndex(void);
  100.     void SetSeqIndex(int IndexIn);
  101.     int GetMass(void);
  102.     void SetMass(int MassIn);
  103.     int GetHits(void);
  104.     void SetHits(int HitsIn);
  105.     int GetCharge(void);
  106.     void SetCharge(int ChargeIn);
  107.     CMSHitInfo& SetHitInfo(int n);
  108.     // return number of hits above threshold
  109.     int GetHits(double Threshold, int MaxI);
  110.     // make a record of the ions hit
  111.     void RecordMatches(CLadder& BLadder, CLadder& YLadder, CLadder& B2Ladder,
  112.        CLadder& Y2Ladder, CMSPeak *Peaks);
  113.     // copy operator
  114.     CMSHit& operator= (CMSHit& in);
  115. protected:
  116.     // helper function for RecordMatches
  117.     void RecordMatchesScan(CLadder& Ladder, int& iHitInfo, CMSPeak *Peaks,
  118.    int Which);
  119. private:
  120.     int Start, Stop;
  121.     int Index, Mass;
  122.     int Hits;  // number of peaks hit
  123.     int Charge;  // the charge of the hit
  124.     THitInfo HitInfo;
  125. };
  126. /////////////////// CMSHit inline methods
  127. inline CMSHit::CMSHit(void): Hits(0)
  128. {}
  129. inline CMSHit::CMSHit(int StartIn, int StopIn, int IndexIn):
  130.     Start(StartIn), Stop(StopIn), Index(IndexIn), Hits(0)
  131. {}
  132. inline CMSHit::CMSHit(int StartIn, int StopIn, int IndexIn, int MassIn, int HitsIn,
  133.       int ChargeIn):
  134.     Start(StartIn), Stop(StopIn), Index(IndexIn), Mass(MassIn),
  135.     Hits(HitsIn), Charge(ChargeIn)
  136. {}
  137. inline CMSHit::~CMSHit() 
  138.     //    delete [] HitInfo; 
  139. }
  140. inline int CMSHit::GetStart(void) 
  141.     return Start;
  142. }
  143. inline void CMSHit::SetStart(int StartIn) 
  144.     Start = StartIn;
  145. }
  146. inline int CMSHit::GetStop(void) 
  147.     return Stop; 
  148. }
  149. inline void CMSHit::SetStop(int StopIn) 
  150.     Stop = StopIn; 
  151. }
  152. inline int CMSHit::GetSeqIndex(void) 
  153.     return Index; 
  154. }
  155. inline void CMSHit::SetSeqIndex(int IndexIn) 
  156.     Index = IndexIn; 
  157. }
  158. inline int CMSHit::GetMass(void) 
  159.     return Mass; 
  160. }
  161. inline void CMSHit::SetMass(int MassIn) 
  162.     Mass = MassIn; 
  163. }
  164. inline int CMSHit::GetHits(void) 
  165. {
  166.     return Hits;
  167. }
  168. inline void CMSHit::SetHits(int HitsIn) 
  169.     Hits = HitsIn;
  170. }
  171. inline int CMSHit::GetCharge(void)
  172. {
  173.     return Charge;
  174. }
  175. inline void CMSHit::SetCharge(int ChargeIn)
  176. {
  177.     Charge = ChargeIn;
  178. }
  179. inline CMSHitInfo& CMSHit::SetHitInfo(int n)
  180. {
  181.     return *(HitInfo.get() + n);
  182. }
  183. inline CMSHit& CMSHit::operator= (CMSHit& in) 
  184.     Start = in.Start; 
  185.     Stop = in.Stop;
  186.     Index = in.Index; 
  187.     Mass = in.Mass;
  188.     Hits = in.Hits;
  189.     Charge = in.Charge;
  190.     HitInfo.reset();
  191.     if(in.HitInfo) {
  192. HitInfo.reset(new CMSHitInfo[Hits]);
  193. int i;
  194. for(i = 0; i < Hits; i++) SetHitInfo(i) = in.SetHitInfo(i);
  195.     }
  196.     return *this;
  197. }
  198. /////////////////// end of CMSHit inline methods
  199. /////////////////////////////////////////////////////////////////////////////
  200. //
  201. //  CMZI::
  202. //
  203. //  Used by CMSPeak class to spectral data
  204. //
  205. // a class for holding an m/z value and intensity
  206. class NCBI_XOMSSA_EXPORT CMZI {
  207. public:
  208.     int MZ;
  209.     unsigned Intensity;
  210.     CMZI(void);
  211.     CMZI(int MZIn, unsigned IntensityIn);
  212.     CMZI(double MZIn, double IntensityIn);
  213. };
  214. ///////////////////  CMZI inline methods
  215. inline CMZI::CMZI(void) 
  216. {}
  217. inline CMZI::CMZI(int MZIn, unsigned IntensityIn): MZ(MZIn), Intensity(IntensityIn) 
  218. {}
  219. inline CMZI::CMZI(double MZIn, double IntensityIn)
  220. {
  221.     MZ = static_cast <int> (MZIn * MSSCALE);
  222.     Intensity = static_cast <unsigned> (IntensityIn);
  223. }
  224. /////////////////// end of CMZI inline methods
  225. /////////////////////////////////////////////////////////////////////////////
  226. //
  227. //  CMSPeak::
  228. //
  229. //  Class used to hold spectra and convert to mass ladders
  230. //
  231. // for containing hits in mspeak class
  232. // first index is charge
  233. typedef CMSHit * TMSHitList;
  234. // min number of peaks to be considered a hit
  235. #define MSHITMIN 6
  236. // min number of peaks to consider a spectra
  237. // two is absolute minimum in order to get m/z range
  238. #define MSPEAKMIN 5
  239. // size of histogram bin in Daltons
  240. #define MSBIN 100
  241. // culled for single charges
  242. #define MSCULLED1 1
  243. // culled for double charges
  244. #define MSCULLED2 2
  245. // original data
  246. #define MSORIGINAL 0
  247. // only the few most intense peaks
  248. #define MSTOPHITS 3
  249. // number of above cull states
  250. #define MSNUMDATA 4
  251. // the number of top hits to retain -- will be replaced by dynamic value
  252. #define MSNUMTOP 3
  253. // the maximum charge state that can be considered
  254. #define MSMAXCHARGE 4
  255. // the precursor charge state at which to begin considering 2+ product ions
  256. const int kConsiderMult = 3;
  257. // function object for cull iterate
  258. typedef bool (*TMZIbool) (const CMZI&, const CMZI&, int tol);
  259. enum EChargeState {
  260.     eChargeUnknown, // charge has not been computed
  261.     eCharge1,
  262.     eChargeNot1,  // charge is not +1, but one of +2, +3 ...
  263.     eCharge2,
  264.     eCharge3,
  265.     eCharge4,
  266.     eCharge5 };
  267. // typedef for holding intensity
  268. typedef AutoPtr <unsigned, ArrayDeleter<unsigned> > TIntensity;
  269. // class to hold experimental data and manipulate
  270. class NCBI_XOMSSA_EXPORT CMSPeak {
  271. public:
  272.     CMSPeak(void);
  273.     CMSPeak(int HitListSize);
  274. private:
  275.     // c'tor helper
  276.     void xCMSPeak(void);
  277.     // writes out dta format
  278.     void xWrite(std::ostream& FileOut, CMZI *Temp, int Num);
  279. public:
  280.     ~CMSPeak(void);
  281.     void AddTotalMass(int massin, int tolin);
  282.     void Sort(int Which = MSORIGINAL);
  283.     // Read a spectrum set into a CMSPeak
  284.     int Read(CMSSpectrum& Spectrum, double MSMSTolerance);
  285.     // Write out a CMSPeak in dta format (useful for debugging)
  286.     enum EFileType { eDTA, eASC, ePKL, ePKS, eSCIEX, eUnknown };
  287.     void Write(std::ostream& FileOut, EFileType FileType = eDTA, int Which = MSORIGINAL);
  288.     // functions used in SmartCull
  289.     // iterate thru peaks, deleting ones that pass the test
  290.     void CullIterate(CMZI *Temp, int& TempLen, TMZIbool FCN);
  291.     // cull precursors
  292.     void CullPrecursor(CMZI *Temp, int& TempLen, double Precursor);
  293.     // take out peaks below a threshold
  294.     void CullBaseLine(double Threshold, CMZI *Temp, int& TempLen);
  295.     // cull isotopes using the Markey Method
  296.     void CullIsotope(CMZI *Temp, int& TempLen);
  297.     // cull peaks that are water or ammonia loss
  298.     // note that this only culls the water or ammonia loss if these peaks have a lesser
  299.     // less intensity
  300.     void CullH20NH3(CMZI *Temp, int& TempLen);
  301.     // recursively culls the peaks
  302.     void SmartCull(double Threshold, int Charge,
  303.    int SingleWindow,  // size of the charge 1 window in Da
  304.    int DoubleWindow,  // size of the charge 2 window in Da
  305.    int SingleNum,     // number of peaks allowed in charge 1 window
  306.    int DoubleNum);    // number of peaks allowed in charge 2 window
  307.     // use smartcull on all charges
  308.     void CullAll(double Threshold, 
  309.  int SingleWindow,
  310.  int DoubleWindow,
  311.  int SingleNum,
  312.  int DoubleNum);
  313.     // return the lowest culled peak and the highest culled peak less than the
  314.     // precursor mass passed in
  315.     void HighLow(int& High, int& Low, int& NumPeaks, int PrecursorMass, int Charge,
  316.  double Threshold,
  317.  int& NumLo,  // number of peak below mh/2
  318.  int& NumHi   // number of peaks above mh/2 and below mh
  319.  );
  320.     // count number of AA intervals in spectum.
  321.     int CountAAIntervals(CMassArray& MassArray, bool Nodup=true, int Which = MSCULLED1);
  322.     // counts the number of peaks above % of maximum peak
  323.     int AboveThresh(double Threshold, int Which = MSORIGINAL);
  324.     // the number of peaks at and below the precursor ion
  325.     int PercentBelow(void);
  326.     //  return the number of peaks in a range. range is in fractions of MH
  327.     int CountRange(double StartFraction, double StopFraction);
  328.     // takes the ratio, low/high, of two ranges in the spectrum
  329.     double RangeRatio(double Start, double Middle, double Stop);
  330.     // various charge functions, some depreciated
  331.     
  332.     void SetPlusOne(double PlusIn);
  333.     // is the data charge +1?
  334.     bool IsPlus1(double PercentBelowIn);
  335.     // calculates charge based on threshold and sets charge value 
  336.     void SetComputedCharge(int MaxCharge);
  337.     EChargeState GetComputedCharge(void);
  338.     // return allowed computed charges
  339.     int* GetCharges(void) { return Charges;}
  340.     // return number of allowed computed charges
  341.     int GetNumCharges(void) { return NumCharges; }
  342.     // Truncate the at the precursor if plus one and set charge to 1
  343.     // if charge is erronously set to 1, set it to 2
  344.     void TruncatePlus1(void);
  345.     
  346.     unsigned GetNum(int Which = MSORIGINAL);
  347.     CMZI *GetMZI(int Which = MSORIGINAL);
  348.     int Compare(CLadder& Ladder, int Which = MSCULLED1);
  349.     bool Contains(int value, int Which);
  350.     bool ContainsFast(int value, int Which);
  351.     // compares only the top hits
  352.     bool CompareTop(CLadder& Ladder);
  353.     int GetMaxI(int Which = MSORIGINAL);
  354.     // returns the cull array index
  355.     int GetWhich(int Charge);
  356.     // compare assuming all lists are sorted
  357.     // Intensity is optional argument that allows recording of the intensity
  358.     int CompareSorted(CLadder& Ladder, int Which, TIntensity * Intensity);
  359.     // initializes arrays used to track hits
  360.     void CMSPeak::InitHitList(void);
  361.     TMSHitList& GetHitList(int Index);
  362.     int GetHitListIndex(int Index);
  363.     // add hit to hitlist.  returns true and the added hit if successful
  364.     bool AddHit(CMSHit& in, CMSHit*& out);
  365.     // keep track of the number of peptides examine for each charge state
  366.     int GetPeptidesExamined(int ChargeIn);
  367.     int& SetPeptidesExamined(int ChargeIn);
  368.     // getter-setters
  369.     int GetMass(void);
  370.     // get charge that came from input file
  371.     int GetCharge(void);
  372.     EMSHitError GetError(void);
  373.     void SetError(EMSHitError ErrorIn);
  374.     string& SetName(void);
  375.     const string& GetName(void) const;
  376.     int& SetNumber(void);
  377.     const int GetNumber(void) const;
  378.     // set the mass tolerance.  input in Daltons.
  379.     void SetTolerance(double tolin);
  380.     int GetTol(void);
  381.     char *SetUsed(int Which);
  382.     // clear used arrays for one cull type
  383.     void ClearUsed(int Which);
  384.     // clear used arrays for all cull types
  385.     void ClearUsedAll(void);
  386.     // functions for testing if peaks are h2o or nh3 losses
  387.     // check to see if TestMZ is Diff away from BigMZ
  388.     bool IsAtMZ(int BigMZ, int TestMZ, int Diff, int tol);
  389.     // see if TestMZ can be associated with BigMZ, e.g. water loss, etc.
  390.     bool IsMajorPeak(int BigMZ, int TestMZ, int tol);
  391. private:
  392.     CMZI *MZI[MSNUMDATA]; // m/z values and intensities, sorted by m/z.  first is original, second is culled
  393.     char *Used[MSNUMDATA];  // used to mark m/z values as used in a match
  394.     unsigned Num[MSNUMDATA]; // number of CMZI.  first is original, second is culled
  395.     bool Sorted[MSNUMDATA]; // have the CMZI been sorted?
  396.     bool *Match;    // is a peak matched or not?
  397.     CMZI ** IntensitySort;  // points to CMZI original, sorted.
  398.     int TotalMass;  // singly protonated m/z
  399.     int Charge;    // Charge from input file
  400.     int Charges[MSMAXCHARGE];  // Computed allowed charges
  401.     int NumCharges;  // array size of Charges[]
  402.     int tol;        // error tolerance of peptide
  403.     double PlusOne;  // value used to determine if spectra is +1
  404.     EChargeState ComputedCharge;  // algorithmically calculated 
  405.     CAA AA;
  406.     char *AAMap;
  407.     string Name;  // name taken from spectrum
  408.     int Number;  // spectrum number taken from spectrum
  409.     // list of hits
  410.     TMSHitList HitList[MSMAXCHARGE];
  411.     int HitListSize;  // max size of hit list
  412.     int HitListIndex[MSMAXCHARGE];  // current size of HitList
  413.     int LastHitNum[MSMAXCHARGE];  // the smallest hit currently in List
  414.     int PeptidesExamined[MSMAXCHARGE];  // the number of peptides examined in search
  415.     EMSHitError Error; // errors that have occurred in processing
  416. };
  417. ///////////////////   CMSPeak inline methods
  418. inline void CMSPeak::SetPlusOne(double PlusIn) 
  419.     PlusOne = PlusIn; 
  420. }
  421. inline EChargeState CMSPeak::GetComputedCharge(void) 
  422.     return ComputedCharge; 
  423. }
  424. inline unsigned CMSPeak::GetNum(int Which) 
  425.     return Num[Which];
  426. }
  427. inline CMZI * CMSPeak::GetMZI(int Which) 
  428.     return MZI[Which];
  429. }
  430. inline TMSHitList& CMSPeak::GetHitList(int Index) 
  431.     return HitList[Index]; 
  432. }
  433. inline int CMSPeak::GetHitListIndex(int Index) 
  434.     return HitListIndex[Index]; 
  435. }
  436. // keep track of the number of peptides examine for each charge state
  437. inline int CMSPeak::GetPeptidesExamined(int ChargeIn) 
  438.     return PeptidesExamined[ChargeIn - Charges[0]];
  439. }
  440. inline int& CMSPeak::SetPeptidesExamined(int ChargeIn) 
  441.     return PeptidesExamined[ChargeIn - Charges[0]];
  442. }
  443. inline int CMSPeak::GetMass(void) 
  444.     return TotalMass; 
  445. }
  446. // get charge that came from input file
  447. inline int CMSPeak::GetCharge(void) 
  448.     return Charge; 
  449. }
  450. inline EMSHitError CMSPeak::GetError(void) 
  451. {
  452.     return Error; 
  453. }
  454. inline void CMSPeak::SetError(EMSHitError ErrorIn) 
  455. {
  456.     Error = ErrorIn; 
  457. }
  458. inline string& CMSPeak::SetName(void) 
  459.     return Name; 
  460. }
  461. inline const string& CMSPeak::GetName(void) const 
  462.     return Name; 
  463. }
  464. inline int& CMSPeak::SetNumber(void) 
  465.     return Number; 
  466. }
  467. inline const int CMSPeak::GetNumber(void) const 
  468.     return Number; 
  469. }
  470. // set the mass tolerance.  input in Daltons.
  471. inline void CMSPeak::SetTolerance(double tolin)
  472. {
  473.     tol = static_cast <int> (tolin*MSSCALE);
  474. }
  475. inline int CMSPeak::GetTol(void) 
  476.     return tol; 
  477. }
  478. inline char *CMSPeak::SetUsed(int Which)
  479. {
  480.     return Used[Which];
  481. }
  482. inline void CMSPeak::ClearUsed(int Which)
  483. {
  484.     memset(Used[Which], 0, Num[Which]);
  485. }
  486. inline void CMSPeak::ClearUsedAll(void)
  487. {
  488.     int iCharges;
  489.     for(iCharges = 0; iCharges < GetNumCharges(); iCharges++)
  490. ClearUsed(GetWhich(GetCharges()[iCharges]));
  491.     ClearUsed(MSTOPHITS);
  492. }
  493. // returns the cull array index
  494. inline int CMSPeak::GetWhich(int Charge)
  495. {
  496.     if(Charge <  kConsiderMult) return MSCULLED1;
  497.     else return MSCULLED2;
  498. }
  499. /////////////////// end of  CMSPeak  inline methods
  500. /////////////////////////////////////////////////////////////////////////////
  501. //
  502. //  CMSPeakSet::
  503. //
  504. //  Class used to hold sets of CMSPeak and access them quickly
  505. //
  506. typedef deque <CMSPeak *> TPeakSet;
  507. typedef struct _MassPeak {
  508.     int Mass, Peptol;
  509.     int Charge;
  510.     CMSPeak *Peak;
  511. } TMassPeak;
  512. typedef AutoPtr <TMassPeak, ArrayDeleter<TMassPeak> > TAPMassPeak;
  513. typedef multimap <int, TMassPeak> TMassPeakMap;
  514. class NCBI_XOMSSA_EXPORT CMSPeakSet {
  515. public:
  516.     // tor's
  517.     CMSPeakSet(void);
  518.     ~CMSPeakSet();
  519.     void AddPeak(CMSPeak *PeakIn);
  520.     // put the pointers into an array sorted by mass
  521.     void SortPeaks(
  522.    int Peptol  // the precursor mass tolerance
  523.    );
  524.     int GetArraySize(void);
  525.     // Get the first index into the sorted array where the mass
  526.     // is >= the given mass.  Remember to subtract the tolerance and
  527.     // check for out of bounds
  528.     TMassPeak *GetIndexLo(int Mass);
  529.     // get peak for sorted list by index into list
  530.     CMSPeak *GetPeak(int Index);  
  531.     TMassPeak *GetEndMassPeak(void); 
  532.     // get a particular MassPeak
  533.     TMassPeak& GetMassPeak(int i);
  534.     TPeakSet& GetPeaks(void);
  535. private:
  536.     TPeakSet PeakSet;  // peak list for deletion
  537.     TMassPeakMap MassMap;
  538.     TAPMassPeak MassPeak; // array of neutral masses
  539.     int ArraySize;  // size of above array
  540. };
  541. ///////////////////   CMSPeakSet inline methods
  542. inline CMSPeakSet::CMSPeakSet(void)
  543. {}
  544. inline void CMSPeakSet::AddPeak(CMSPeak *PeakIn)
  545.     PeakSet.push_back(PeakIn); 
  546. }
  547. inline int CMSPeakSet::GetArraySize(void) 
  548.     return ArraySize; 
  549. }
  550. inline TMassPeak * CMSPeakSet::GetEndMassPeak(void) 
  551.     return MassPeak.get()+ArraySize; 
  552. }
  553. inline TMassPeak& CMSPeakSet::GetMassPeak(int i) 
  554.     return *(MassPeak.get()+i); 
  555. }
  556. inline TPeakSet& CMSPeakSet::GetPeaks(void) 
  557.     return PeakSet; 
  558. }
  559. /////////////////// end of CMSPeakSet inline methods
  560. END_SCOPE(omssa)
  561. END_SCOPE(objects)
  562. END_NCBI_SCOPE
  563. #endif
  564. /*
  565.   $Log: mspeak.hpp,v $
  566.   Revision 1000.3  2004/06/01 18:09:07  gouriano
  567.   PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.14
  568.   Revision 1.14  2004/05/27 20:52:15  lewisg
  569.   better exception checking, use of AutoPtr, command line parsing
  570.   Revision 1.13  2004/04/06 19:53:20  lewisg
  571.   allow adjustment of precursor charges that allow multiply charged product ions
  572.   Revision 1.12  2004/03/30 19:36:59  lewisg
  573.   multiple mod code
  574.   Revision 1.11  2004/03/16 20:18:54  gorelenk
  575.   Changed includes of private headers.
  576.   Revision 1.10  2003/12/22 23:03:18  lewisg
  577.   top hit code and variable mod fixes
  578.   Revision 1.9  2003/12/08 17:37:20  ucko
  579.   #include <string.h> rather than <cstring>, since MIPSpro lacks the latter.
  580.   Revision 1.8  2003/12/05 13:10:32  lewisg
  581.   delete GetUsed
  582.   Revision 1.7  2003/12/04 23:39:08  lewisg
  583.   no-overlap hits and various bugfixes
  584.   Revision 1.6  2003/11/14 20:28:05  lewisg
  585.   scale precursor tolerance by charge
  586.   Revision 1.5  2003/11/10 22:24:12  lewisg
  587.   allow hitlist size to vary
  588.   Revision 1.4  2003/10/24 21:28:41  lewisg
  589.   add omssa, xomssa, omssacl to win32 build, including dll
  590.   Revision 1.3  2003/10/21 21:12:17  lewisg
  591.   reorder headers
  592.   Revision 1.2  2003/10/21 03:43:20  lewisg
  593.   fix double default
  594.   Revision 1.1  2003/10/20 21:32:13  lewisg
  595.   ommsa toolkit version
  596.   Revision 1.20  2003/10/07 18:02:28  lewisg
  597.   prep for toolkit
  598.   Revision 1.19  2003/10/06 18:14:17  lewisg
  599.   threshold vary
  600.   Revision 1.18  2003/08/14 23:49:22  lewisg
  601.   first pass at variable mod
  602.   Revision 1.17  2003/08/06 18:29:11  lewisg
  603.   support for filenames, numbers using regex
  604.   Revision 1.16  2003/07/21 20:25:03  lewisg
  605.   fix missing peak bug
  606.   Revision 1.15  2003/07/19 15:07:38  lewisg
  607.   indexed peaks
  608.   Revision 1.14  2003/07/18 20:50:34  lewisg
  609.   *** empty log message ***
  610.   Revision 1.13  2003/07/17 18:45:50  lewisg
  611.   multi dta support
  612.   Revision 1.12  2003/07/07 16:17:51  lewisg
  613.   new poisson distribution and turn off histogram
  614.   Revision 1.11  2003/04/24 18:45:55  lewisg
  615.   performance enhancements to ladder creation and peak compare
  616.   Revision 1.10  2003/04/18 20:46:52  lewisg
  617.   add graphing to omssa
  618.   Revision 1.9  2003/04/02 18:49:51  lewisg
  619.   improved score, architectural changes
  620.   Revision 1.8  2003/03/21 21:14:40  lewisg
  621.   merge ming's code, other stuff
  622.   Revision 1.7  2003/02/07 16:18:23  lewisg
  623.   bugfixes for perf and to work on exp data
  624.   Revision 1.6  2003/02/03 20:39:02  lewisg
  625.   omssa cgi
  626.   Revision 1.5  2003/01/21 22:19:26  lewisg
  627.   get rid of extra 2 aa function
  628.   Revision 1.4  2003/01/21 21:46:12  lewisg
  629.   *** empty log message ***
  630.   Revision 1.3  2002/11/27 00:07:52  lewisg
  631.   fix conflicts
  632.   Revision 1.2  2002/11/26 00:53:34  lewisg
  633.   sync versions
  634.   Revision 1.1  2002/07/16 13:27:09  lewisg
  635.   *** empty log message ***
  636.   
  637. */