src/RcppRamp.h
60c84217
 #ifndef _mzR_RCPP_RAMP_H
 #define _mzR_RCPP_RAMP_H
 
 #include "cramp.h"
 #include "Rcpp.h"
 
 class RcppRamp {
 
 private:
   cRamp *ramp;
   Rcpp::List runInfo;
   bool isInCacheRunInfo;
   Rcpp::List instrumentInfo;
   bool isInCacheInstrumentInfo;
   Rcpp::DataFrame allScanHeaderInfo;
   bool isInCacheAllScanHeaderInfo;
   Rcpp::StringVector filename;
 
 public:  
   RcppRamp();          // Constructor
   virtual ~RcppRamp(); // Destructor
   
   /** 
    * Opens a mass spec file (mzXML, mzData, etc.) and creates a cRamp object.
    * @param fileName: Name of the msxml file
    * @param declaredScansOnly: suppress RAMP's behavior of creating sparse 
    *        tables to accomodate unlisted scans
    */
   void open( const char* fileName, bool declaredScansOnly=false );
 
   /** 
    * Closes the mzXML file. Releases the memory of the cRamp object. 
    * This function allows memory management from R site.
    */
   void close();
   
   /**
    * Returns the filename.
    * @return the filename
    */
   Rcpp::StringVector getFilename (  );
   
   /**
    * Reads the run information from the mzXML header.
    * @return rampRunInfo* is parsed to a Rcpp::List
    */
   Rcpp::List getRunInfo (  );
   
   /**
    * Reads the instrument information from the mzXML header.
    * @return rampInstrumentInfo* is parsed to a Rcpp::List
    */
   Rcpp::List getInstrumentInfo();
   
   /**
    * Reads the scan header info. It reads for one mass spectrum the 
    * header information, like ms level, retention time, ion current, ... .
    * @return rampScanInfo* is parsed to a Rcpp::List
    */
   Rcpp::List getScanHeaderInfo ( int whichScan  );
   
   /**
    * Reads the scan header info. It reads for all mass spectra the header 
    * information, like ms level, retention time, ion current, ... .
    * @return rampScanInfo* is parsed to a Rcpp::List
    */
   Rcpp::DataFrame getAllScanHeaderInfo ( );
   
   /**
    * This function performs a non-sequential parsing operation on an indexed
    * mzXML file to obtain the peak list (i.e. the mass spectrum) for a numbered scan.
    * @param whichScan: Number of the scan we want to read from
    * @return rampPeakList* is parsed to a Rcpp::List. The first list element 
    *         contains the number of peaks, the second contains a n x 2 matrix 
    *         with the peak list. 
    */
   Rcpp::List getPeakList ( int whichScan );
   
   /**
    * This function reads all scans and returns them as a matrix. The number of 
    * rows is equal to the given number of scan numbers. The columns represent 
    * equidistant m/z values. mzXML file to obtain the peak list (i.e. the mass spectrum) 
    * for a numbered scan.
    * @param whichScan: The scan numbers we want to read from.
    * @param whichMzLow: The lowest m/z value to be returned. 
    * @param whichMzHigh: The highest m/z value to be returned.
    * @param resMz: The resolution in m/z direction.
    * @return The matrix is given back as a Rcpp::NumericMatrix.
    */
   Rcpp::NumericMatrix
   get3DMap ( std::vector<int> scanNumbers,
 	     double whichMzLow,
 	     double whichMzHigh,
 	     double resMz );
   
   /**
    * Getting for the last scan number (not necessarily the number of scans 
    * because of missing scans).
    */
   int getLastScan() const;
   
   /**
    * checks the status of the object.
    */
   bool OK();
 };
 
 #endif