public double GetFramePressureFront(int frameNum) { var fp = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameParams(frameNum); var framepressureFront = fp.GetValueDouble(FrameParamKeyType.PressureFront); return(framepressureFront); }
public void GetFrameDataAllFrameSets() { Check.Require(ScanSetCollection != null && ScanSetCollection.ScanSetList.Count > 0, "Cannot get frame data. FrameSet collection has not been defined."); Console.Write("Loading frame parameters "); var dtLastProgress = DateTime.UtcNow; if (ScanSetCollection == null) { return; } foreach (var scanSet in ScanSetCollection.ScanSetList) { var frame = (LCScanSetIMS)scanSet; var fp = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFrameParams(frame.PrimaryScanNumber); frame.AvgTOFLength = fp.GetValueDouble(FrameParamKeyType.AverageTOFLength); frame.FramePressureUnsmoothed = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFramePressureForCalculationOfDriftTime(frame.PrimaryScanNumber); if (DateTime.UtcNow.Subtract(dtLastProgress).TotalSeconds >= 1) { Console.Write("."); dtLastProgress = DateTime.UtcNow; } } Console.WriteLine(); }
public override double GetTime(int frameNum) { var fp = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFrameParams(frameNum); var time = fp.GetValueDouble(FrameParamKeyType.StartTimeMinutes); return(time); }
public UIMFRun(string fileName) : this() { Check.Require(File.Exists(fileName), "UIMF file does not exist."); Filename = fileName; _globalParams = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetGlobalParams(); Check.Ensure(_globalParams != null, "UIMF file's Global parameters could not be initialized. Check UIMF file to make sure it is a valid file."); var baseFilename = Path.GetFileName(Filename); if (baseFilename != null) { DatasetName = baseFilename.Substring(0, baseFilename.LastIndexOf('.')); } DataSetPath = Path.GetDirectoryName(fileName); MinLCScan = GetMinPossibleLCScanNum(); MaxLCScan = GetMaxPossibleLCScanNum(); MinIMSScan = GetMinPossibleIMSScanNum(); MaxIMSScan = GetMaxPossibleIMSScanNum(); GetMSLevelInfo(); ContainsMSMSData = CheckRunForMSMSData(); }
/// <summary> /// Returns the MSLevel for the given frame /// </summary> /// <param name="frameNum">Frame number</param> /// <returns>1 for MS1 frames, 2 for MS2 frames, 0 for calibration frames, </returns> public override int GetMSLevelFromRawData(int frameNum) { if (MS1Frames.BinarySearch(frameNum) >= 0) { return(1); } if (MS2Frames.BinarySearch(frameNum) >= 0) { return(2); } var fp = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFrameParams(frameNum); if (fp.FrameType == DataReader.FrameType.MS1) { return(1); } if (fp.FrameType == DataReader.FrameType.MS2) { return(2); } if (fp.FrameType == DataReader.FrameType.Calibration) { return(0); } return(1); }
/// <summary> /// The total number of frames in the run /// </summary> /// <returns></returns> public int GetNumFrames() { if (_globalParams == null) { _globalParams = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetGlobalParams(); } return(_globalParams.NumFrames); }
public override void Close() { if (UIMFLibraryAdapter.getInstance(this.Filename).Datareader != null) { UIMFLibraryAdapter.getInstance(this.Filename).CloseCurrentUIMF(); } base.Close(); }
internal int GetNumScansPerFrame() { //TODO: check this and make sure it is correct var minFrame = MinLCScan; var numScansPerFrame = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameParams(minFrame).Scans; return(numScansPerFrame); }
public override int GetNumMSScans() { var numFrames = _globalParams.NumFrames; var frameParams = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameParams(1); var numScansPerFrame = frameParams.Scans; return(numScansPerFrame * numFrames); }
/// <summary> /// Returns the mass spectrum for a specified LC Scanset and a IMS Scanset. /// </summary> /// <param name="lcScanset"></param> /// <param name="imsScanset"></param> /// <param name="minMZ"></param> /// <param name="maxMZ"></param> public override XYData GetMassSpectrum(ScanSet lcScanset, ScanSet imsScanset, double minMZ, double maxMZ) { Check.Require(imsScanset.GetScanCount() > 0, "Cannot get spectrum. Number of scans in ScanSet is 0"); Check.Require(lcScanset.GetScanCount() > 0, "Cannot get spectrum. Number of frames in FrameSet is 0"); var frameLower = lcScanset.getLowestScanNumber(); var frameUpper = lcScanset.getHighestScanNumber(); var scanLower = imsScanset.getLowestScanNumber(); var scanUpper = imsScanset.getHighestScanNumber(); // TODO: If lowest and highest scan numbers are both 0, should we be summing the mass spectrum? var frameType = (DataReader.FrameType)GetMSLevel(lcScanset.PrimaryScanNumber); try { // Obtain an instance of the reader var uimfReader = UIMFLibraryAdapter.getInstance(Filename).Datareader; // Prior to January 2015 the SpectrumCache class in the UIMFReader used Dictionary<int, int> for ListOfIntensityDictionaries // This caused some datasets, e.g. EXP-Mix5_1um_pos_19Jan15_Columbia_DI, to run out of memory when caching 10 spectra // The UIMFLibrary now uses List<int, int>, which takes up less memory (at the expense having slower lookups by BinNumber, though this does not affect DeconTools' use of the UIMFLibrry) uimfReader.SpectraToCache = 10; uimfReader.MaxSpectrumCacheMemoryMB = 750; double[] xvals; int[] yvals; var nonZeroLength = uimfReader.GetSpectrum(frameLower, frameUpper, frameType, scanLower, scanUpper, minMZ, maxMZ, out xvals, out yvals); var xydata = new XYData(); if (xvals == null || xvals.Length == 0) { xydata.Xvalues = null; xydata.Yvalues = null; return(xydata); } xydata.Xvalues = xvals; xydata.Yvalues = yvals.Select <int, double>(i => i).ToArray(); if (xydata.Xvalues[0] < minMZ || xydata.Xvalues[xydata.Xvalues.Length - 1] > maxMZ) { xydata = xydata.TrimData(minMZ, maxMZ); } return(xydata); } catch (Exception ex) { Console.WriteLine("Error in UIMF GetMassSpectrum: " + ex.Message); throw; } }
public double GetFramePressure(int frameNum) { if (!this._framePressuresUnsmoothed.ContainsKey(frameNum)) { var pressure = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFramePressureForCalculationOfDriftTime(frameNum); this._framePressuresUnsmoothed.Add(frameNum, pressure); } return(this._framePressuresUnsmoothed[frameNum]); }
public float GetTIC(int lcScan, int imsScan) { var frameScans = UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFrameScans(lcScan); var query = (from item in frameScans where item.Scan == imsScan select item.TIC).ToList(); if (query.Count == 0) { return(0); } return((float)query.FirstOrDefault()); }
public double GetDriftTime(int frameNum, int scanNum) { var fp = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameParams(frameNum); var avgTOFLength = fp.GetValueDouble(FrameParamKeyType.AverageTOFLength); var driftTime = avgTOFLength * (scanNum + 1) / 1e6; //note that scanNum is zero-based. Need to add one here var framePressure = GetFramePressure(frameNum); if (Math.Abs(framePressure) > float.Epsilon) { driftTime = driftTime * (FramePressureStandard / framePressure); // correc } return(driftTime); }
private void GetMSLevelInfo() { _frameList = new SortedDictionary <int, DataReader.FrameType>(UIMFLibraryAdapter.getInstance(Filename).Datareader.GetMasterFrameList()); MS1Frames = new List <int>(); MS2Frames = new List <int>(); var ms1Frames = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameNumbers(DataReader.FrameType.MS1); if (ms1Frames != null && ms1Frames.Length != 0) { MS1Frames = ms1Frames.ToList(); } var ms2Frames = UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameNumbers(DataReader.FrameType.MS2); if (ms2Frames != null && ms2Frames.Length != 0) { MS2Frames = ms2Frames.ToList(); } }
//public void GetDriftTimeProfile(int frameStartIndex, int frameStopIndex, int startScan, int stopScan, double targetMZ, double toleranceInMZ) //{ // int[] scanValues = null; // int[] intensityVals = null; // UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetDriftTimeProfile(frameStartIndex, frameStopIndex, this.FrameTypeForMS1, startScan, stopScan, targetMZ, toleranceInMZ, ref scanValues, ref intensityVals); // if (scanValues == null || scanValues.Length == 0) // { // this.XYData.Xvalues = null; // this.XYData.Yvalues = null; // } // else // { // this.XYData.Xvalues = scanValues.Select<int, double>(i => i).ToArray(); // this.XYData.Yvalues = intensityVals.Select<int, double>(i => i).ToArray(); // } //} public XYData GetDriftTimeProfile(int frameNum, int startScan, int stopScan, double targetMZ, double toleranceInMZ) { int[] scanValues = null; int[] intensityVals = null; UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetDriftTimeProfile(frameNum, frameNum, DataReader.FrameType.MS1, startScan, stopScan, targetMZ, toleranceInMZ, ref scanValues, ref intensityVals); var xydata = new XYData(); if (scanValues == null || scanValues.Length == 0) { xydata.Xvalues = null; xydata.Yvalues = null; } else { xydata.Xvalues = scanValues.Select <int, double>(i => i).ToArray(); xydata.Yvalues = intensityVals.Select <int, double>(i => i).ToArray(); } return(xydata); }
//public int[][] GetFramesAndScanIntensitiesForAGivenMz(int startFrame, int endFrame, int frameType, int startScan, int endScan, double targetMz, double toleranceInMZ) //{ // return UIMFLibraryAdapter.getInstance(this.Filename).Datareader.GetFramesAndScanIntensitiesForAGivenMz(startFrame, endFrame, frameType, startScan, endScan, targetMz, toleranceInMZ); //} ////Anuj added this //for now I am converting this dictionary to a frame and scna list, only because the UIMF library already has that method //public void GetMassSpectrum(Dictionary<ushort, List<ushort>> frameAndScans, double minMz, double MaxMz) //{ // List<ushort> frameNumbers = frameAndScans.Keys.ToList<ushort>(); // List<List<ushort>> scanNumbers = new List<List<ushort>>(); // foreach (ushort frameNum in frameNumbers) // { // List<ushort> scanList = frameAndScans[frameNum]; // scanNumbers.Add(scanList); // } // GetMassSpectrum(frameNumbers, scanNumbers, minMz, MaxMz); //} ////Anuj added this //public void GetMassSpectrum(List<ushort> frameNumbers, List<List<ushort>> scanNumbersForFrameNumbers, double minMz, double maxMz) //{ // List<double> mzList = new List<double>(); // List<double> intensityList = new List<double>(); // UIMFLibraryAdapter.getInstance(this.Filename).Datareader.SumScansNonCached(frameNumbers, scanNumbersForFrameNumbers, mzList, intensityList, minMz, maxMz); // this.XYData.Xvalues = mzList.ToArray(); // this.XYData.Yvalues = intensityList.ToArray(); //} public Stack <int[]> GetDescendingBpiValuesByFramesAndScans() { return(UIMFLibraryAdapter.getInstance(Filename).Datareader.GetFrameAndScanListByDescendingIntensity()); }