def get_average_mass_spectrum_by_scanlist( self, scans_list: List[int], auto_process: bool = True, ppm_tolerance: float = 5.0) -> MassSpecProfile: ''' Averages selected scans mass spectra using Thermo's AverageScans method scans_list: list[int] auto_process: bool If true performs peak picking, and noise threshold calculation after creation of mass spectrum object Returns: MassSpecProfile ''' """ Averages selected scans mass spectra using Thermo's AverageScans method scans_list: list[int] auto_process: bool If true performs peak picking, and noise threshold calculation after creation of mass spectrum object Returns: MassSpecProfile """ d_params = self.set_metadata(scans_list=scans_list) # assumes scans is full scan or reduced profile scan scans = List[int]() for scan in scans_list: scans.Add(scan) # Create the mass options object that will be used when averaging the scans options = MassOptions() options.ToleranceUnits = ToleranceUnits.ppm options.Tolerance = ppm_tolerance # Get the scan filter for the first scan. This scan filter will be used to located # scans within the given scan range of the same type averageScan = Extensions.AverageScans(self.iRawDataPlus, scans, options) len_data = averageScan.SegmentedScan.Positions.Length mz_list = list(averageScan.SegmentedScan.Positions) abund_list = list(averageScan.SegmentedScan.Intensities) data_dict = { Labels.mz: mz_list, Labels.abundance: abund_list, } mass_spec = MassSpecProfile(data_dict, d_params, auto_process=auto_process) return mass_spec
def GetAverageSpectrum(rawFile, firstScanNumber: int, lastScanNumber: int, outputData: bool): # Create the mass options object that will be used when averaging the scans options = MassOptions() options.ToleranceUnits = ToleranceUnits.ppm options.Tolerance = 5.0 # Get the scan filter for the first scan. This scan filter will be used to located # scans within the given scan range of the same type scanFilter = rawFile.GetFilterForScanNumber(firstScanNumber) print(scanFilter.ScanMode) # Get the average mass spectrum for the provided scan range. In addition to getting the # average scan using a scan range, the library also provides a similar method that takes # a time range. averageScan = Extensions.AverageScansInScanRange(rawFile, firstScanNumber, lastScanNumber, scanFilter, options) #average= ScanAveragerFactory.GetScanAverager(rawFile) #averageScan = rawFile.AverageScansInScanRange(firstScanNumber, lastScanNumber, scanFilter, options) if averageScan.HasCentroidStream: print("Average spectrum ({0} points)".format( averageScan.CentroidScan.Length)) # Print the spectral data (mass, intensity values) #if outputData: # for i in range(averageScan.CentroidScan.Length): # print(" {}\t{}".format(averageScan.CentroidScan.Masses[i], averageScan.CentroidScan.Intensities[i])) # This example uses a different method to get the same average spectrum that was calculated in the # previous portion of this method. Instead of passing the start and end scan, a list of scans will # be passed to the GetAveragedMassSpectrum function. scans = List[int]() for scan in (1, 6, 7, 9, 11, 12, 14): scans.Add(scan) averageScan = Extensions.AverageScans(rawFile, scans, options) len_data = averageScan.SegmentedScan.Positions.Length mz_list = list(averageScan.SegmentedScan.Positions) abund_list = list(averageScan.SegmentedScan.Intensities) #for i in range(len_data): # mz_list.append(averageScan.SegmentedScan.Positions[i]) # abund_list.append(averageScan.SegmentedScan.Intensities[i]) pyplot.plot(mz_list, abund_list) #pyplot.show() centroid_mz_list = [] abundance_mz_list = [] if averageScan.HasCentroidStream: print("Average spectrum ({0} points)".format( averageScan.CentroidScan.Length)) # Print the spectral data (mass, intensity values) if outputData: for i in range(averageScan.CentroidScan.Length): centroid_mz_list.append(averageScan.CentroidScan.Masses[i]) averageScan.CentroidScan.Resolutions abundance_mz_list.append( averageScan.CentroidScan.Intensities[i]) #print(" {}\t{}".format(averageScan.CentroidScan.Masses[i], averageScan.CentroidScan.Intensities[i]) ) pyplot.plot(centroid_mz_list, abundance_mz_list, linewidth=0, marker='o') pyplot.show() print()