Techniques for mass spectrometry peak list computation using parallel processing
Abstract
Described are techniques for processing data. Sample analysis is performed generating scans of data. Each scan comprises a set of data elements each associating an ion intensity count with a plurality of dimensions including a retention time dimension and a mass to charge ratio dimension. The scans are analyzed to identify one or more ion peaks. Analyzing includes filtering a first plurality of the scans producing a first plurality of filtered output scans. The filtering including first filtering producing a first filtering output, wherein the first filtering includes executing a plurality of threads in parallel which apply a first filter to the first plurality of scans to produce the first filtering output. Each of the plurality of threads computes at least one filtered output point for at least one corresponding input point included in the plurality of scans. Analyzing includes detecting one or more peaks using the filtered output scans.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method for processing data comprising:
performing sample analysis and generating scans of data, each of said scans comprising a set of data elements each associating an ion intensity count with a plurality of dimensions including a retention time dimension and a mass to charge ratio dimension; and analyzing said scans to identify one or more ion peaks, said analyzing including:
filtering a first plurality of said scans producing a first plurality of filtered output scans, said filtering including first filtering producing a first filtering output, wherein said first filtering includes executing a plurality of threads in parallel which apply a first filter to said first plurality of scans to produce said first filtering output, wherein each of said plurality of threads computes at least one filtered output point for at least one corresponding input point included in said plurality of scans; and
detecting one or more peaks using said filtered output scans.
2 . The method of claim 1 , wherein said first filtering includes:
performing first processing by a first of said plurality of threads, said first processing including applying a smoothing filter to a first input point in a mass-to-charge ratio dimension to produce a first filtered output point and applying a second derivative filter to the first input point in a mass-to-charge ratio dimension to produce a second filtered output point; and performing second processing by a second of said plurality of threads, said second processing including applying said smoothing filter to a second input point in a mass-to-charge ratio dimension to produce a third filtered output point and applying the second derivative filter to the second input point in a mass-to-charge ratio dimension to produce a fourth filtered output point, wherein said first thread and said second thread execute concurrently and said first thread and said second thread are included in a same block of threads accessing a plurality of input points including said first point and said second point from a portion of memory shared by said block of threads.
3 . The method of claim 2 , wherein said first plurality of threads are included in a two-dimensional grid of thread blocks, each of said thread blocks including a two-dimensional configuration of threads, each of said thread blocks being identified in said grid using a thread block identifier having an “x” dimension indexing said each thread block along the mass to charge ratio axis and having a “y” dimension indexing said each thread block along the retention time axis.
4 . The method of claim 3 , wherein said first thread determines a first input point to which said smoothing filter is applied by said first thread and said first thread determines a first output point identifying a location at which a corresponding filtered output point for said first input is stored, said first input point being identified in said first plurality of scans in accordance with coordinates (m, s), wherein “m” is a mass coordinate mapping to a mass to charge ratio of said first input point and “s” identifies a scan in which said first input point is included, wherein said first output point is also identified using the coordinates (m,s).
5 . The method of claim 4 , wherein said first thread is included in a first thread block having a first thread block identifier, said first thread having a first thread identifier identifying a position of said first thread within said first thread block, wherein said first thread determines the coordinates (m,s) using said first thread block identifier and said first thread identifier.
6 . The method of claim 2 , wherein said first filtering uses filtering coefficients bound to a texture.
7 . The method of claim 6 , wherein said filtering coefficients are used in connection with filtering a portion of less than all mass to charge ratio values in said first plurality of scans.
8 . The method of claim 1 , wherein said filtering includes executing a second plurality of threads concurrently, wherein each of said second plurality of threads applies a second filter in a retention time dimension to at least one data point.
9 . The method of claim 8 , wherein said second filter is any of a smoothing filter and second derivative filter.
10 . The method of claim 8 , wherein said second filter uses a same set of filter coefficients for all data points to which the second filter is applied.
11 . The method of claim 10 , wherein the filter coefficients are stored in constant memory used by a graphics processing unit, said graphics processing unit and said constant memory being included in a separate device configured for used with a computer.
12 . The method of claim 8 , wherein said second plurality of threads is included in a two-dimensional grid of thread blocks, each of said thread blocks being a two-dimensional block of threads.
13 . The method of claim 1 , further comprising:
determining first thread block dimensions of a first block of threads configured for parallel execution and each thread in said first block configured to apply a filter in a mass to charge ratio dimension to at least one data point; determining second thread block dimensions of a second block of threads configured for parallel execution and each thread in said second block configured to apply a filter in a retention time dimension to at least one data point; determining third thread block dimensions, wherein each dimension of said third thread block is a least common multiple of corresponding ones of said each dimension of said first thread block and said second thread block; and selecting scan pack dimensions in accordance with said third block dimensions, wherein said scan pack dimensions indicate sizing with respect to a number of said scans of data and a number of mass to charge ratio values per scan, wherein said analyzing is performed on a first scan pack before performing said analyzing with respect to a second scan pack, said first scan pack including a first portion of said scans of data and having said scan pack dimensions, said second scan pack including a second portion of said scans of data and having said scan pack dimensions.
14 . The method of claim 13 , wherein said first scan pack includes said first plurality of scans, and the method further comprising:
reading, by executing code on a processing unit of a computer which executes instructions serially, said first scan pack; storing said first scan pack in a first memory of said computer; copying said first scan pack into a second memory of a device, said device including a graphics processing unit that performs parallel processing, wherein said second memory is configured for use by said graphics processing unit when performing parallel processing and wherein said first memory is not configured for use by said graphics processing unit; performing said first filtering by executing said plurality of threads in parallel on said graphics processor using said first scan pack to identify one or more peaks in said first scan pack; storing, by said graphics processing unit in said second memory, output data identifying said one or more peaks; and copying said output data from said second memory to said first memory.
15 . The method of claim 1 , wherein said detecting one or more peaks is performed by concurrently executing threads included in a two-dimensional grid of thread blocks, each of said thread blocks including a two-dimensional configuration of threads, wherein threads included in a same first thread block have access to data stored in a portion of memory shared by all threads in the first thread block, wherein each of said threads included in said two-dimensional grid determines whether at least one filtered output point included in said filtered output scans is a peak.
16 . The method of claim 15 , wherein each of said thread blocks has first dimensions selected in accordance with utilization of a processing unit which performs concurrent processing, a number of threads included in said thread block having said first dimensions, and an approximation of said first dimensions to a square.
17 . The method of claim 15 , wherein said one or more peaks identified by said detecting are identified with respect to retention time and mass to charge ratio dimensions.
18 . The method of claim 17 , wherein said plurality of dimensions includes an ion mobility dimension and the method includes identifying peaks with respect the ion mobility dimension.
19 . The method of claim 18 , wherein said analyzing includes identifying one or more properties for each of said one or more ion peaks identified and wherein, at least a first of said properties is determined by concurrently executing threads included in a grid of thread blocks, each of said threads determining said first property for at least one of peaks identified by said detecting.
20 . The method of claim 1 , wherein said method is performed in real-time while said scans are generated as a result of sample analysis by a mass spectrometer.
21 . The method of claim 18 , wherein said one or more peaks are a first set of peaks and said analyzing further comprising:
determining a scan pack size comprising a number of scans having different retention times; determining, for each peak in said first set, a data volume having dimensions in accordance with data used for filtering with respect to said each peak and an output volume having dimensions in accordance with said a starting and ending location of said each peak with respect to retention time and m/z dimensions and covering an ion mobility range; determining a buffer volume having each dimension thereof which is at least a same size as a largest corresponding dimension with respect to all data volumes for all peaks in said first set; determining a first portion of peaks of said first set which are included in a first scan pack of said scan pack size, said first scan pack including a partition of said scans; partitioning said first portion into one or more groups of peaks and, for each group, performing first processing, said first processing including:
reading, for each peak in said each group, first data from said first scan pack in accordance with the data volume for said each peak and storing the first data into a buffer having a size in accordance with said buffer volume;
filtering the first data for each peak in said each group, wherein said filtering the first data includes a second plurality of threads executing concurrently, wherein for said each peak, each of said second plurality of threads applies a filter and computes a single filtered output point for a corresponding data point in the buffer for said each peak if said corresponding data point is in included within appropriate ones of the output volume and the data volume for said each peak; and
identifying child peaks for said each group.
22 . The method of claim 21 , wherein, if said filter is applied in a retention time dimension, each of said second plurality of threads computes a single filtered output point for a corresponding data point in the buffer for said each peak if said corresponding data point is within the output volume with respect to the retention time axis and within the data volume with respect to the m/z and the ion mobility axes.
23 . The method of claim 21 , wherein, if said filter is applied in a retention time dimension, each of said second plurality of threads computes a single filtered output point for a corresponding data point in the buffer for said each peak if said corresponding data point is within the output volume with respect to the retention time and the m/z axes and within the data volume with respect to the ion mobility axis.
24 . The method of claim 21 , wherein, if said filter is applied in a retention time dimension, each of said second plurality of threads computes a single filtered output point for a corresponding data point in the buffer for said each peak if said corresponding data point is within the output volume with respect to the retention time, the m/z, and the ion mobility axes.
25 . The method of claim 18 , wherein said analyzing for a first peak further comprises:
applying a smoothing filter in the retention time dimension to first data stored in the first buffer to produce second data stored in a second buffer; applying a second derivative filter in the retention time dimension to the first data stored in the first buffer to produce third data stored in a third buffer; applying, after producing said second data and said third data, a smoothing filter in the mass to charge ratio dimension to the third data to produce fourth data stored in said first buffer; applying, after producing said fourth data, a smoothing filter in the ion mobility dimension to the fourth data to produce fifth data stored in said third buffer; applying, after producing said fifth data, a second derivative filter in the mass to charge ratio dimension to said second data to produce sixth data stored in the first buffer; applying, after producing said sixth data, a smoothing filter in the ion mobility dimension to said sixth data to produce seventh data which is combined with said fifth data to produce a first combined result stored in said third buffer; applying, after producing said first combined result, a smoothing filter in the mass to charge ratio dimension to the second data to produce eighth data stored in the first buffer; and applying, after producing said eighth data, a second derivative filter in the ion mobility dimension to the eighth data to produce ninth data which is combined with said first combined result to produce a second combined result stored in the third buffer.
26 . The method of claim 21 , wherein said filtering the first data for each peak includes applying a sequence of three filters, a first of the filters being applied with respect to a first dimension or first axis to the first data to produce a first output, a second of the filters being applied with respect to a second dimension or second axis to the first output to produce a second output, a third of the filters being applied with respect to a third dimension or third axis to the second output to produce a third output,
27 . The method of claim 26 , wherein said first output has a first size with respect to said first dimension which is less than a second size of the first data with respect to the first dimension, wherein said second output has a third size with respect to said second dimension which is less than fourth size of the first output with respect to the second dimension, and wherein said third output has a fourth size with respect to said third dimension which is less than fifth size of the second output with respect to the third dimension
28 . A method for processing data from sample analysis comprising:
performing mass spectrometry and generating one or more spectra; and analyzing the one or more spectra to generate a peak list of one or more ion peaks identified in the one or more spectra, said analyzing including performing, in parallel, at least a first filtering step and a second filtering step.
29 . The method of claim 28 , wherein said analyzing includes filtering the one or more spectra and the first filtering step computes a first filtered output point and said second filtering step computes a second filtered output point.
30 . The method of claim 29 , wherein said filtering is performed in one of a plurality of dimensions, said plurality of dimensions including retention time, mass or m/z, and ion mobility.
31 . A system that performs mass spectrometry comprising:
a parallel processing unit; and a computer readable medium comprising code stored thereon which, when executed, performs steps including:
receiving one or more spectra produced as a result of mass analyzing a sample; and
analyzing the one or more spectra to generate a peak list of one or more ion peaks identified in the one or more spectra, said analyzing including performing, in parallel using said parallel processing unit, at least a first filtering step and a second filtering step.
32 . The system of claim 31 , wherein said analyzing includes filtering the one or more spectra and the first filtering step computes a first filtered output point and said second filtering step computes a second filtered output point.
33 . The system of claim 32 , wherein said filtering performs filtering in one of a plurality of dimensions, said plurality of dimensions including retention time, mass or m/z, and ion mobility.
34 . The system of claim 31 , further comprising a processor which executes instructions serially, wherein said computer readable medium further includes code for:
performing preprocessing; obtaining said one or more spectra as input from a memory; performing peak detection to identify said one or more peaks; performing peak properties computation on said one or more peaks included in said peak list to generate peak property information; and writing said peak list and said peak property information to a memory; and
wherein said performing preprocessing, said obtaining, and said writing are performed by code executing in said processor and wherein said performing peak detection, said performing peak property computation are performed by code executing in the parallel processing unit.
35 . The system of claim 34 , wherein, in connection with performing said obtaining, said processor executes code that reads said one or more spectra, stores said one or more spectra in a first memory that is configured for access by said processor and is not configured for access by the parallel processing unit, and copies said one or more spectra from said first memory to a second memory included on a device comprising said parallel processing unit.
36 . The system of claim 31 , wherein said system output the peak list and stores the peak list to non-volatile memory, and wherein said one or more spectra are stored in volatile memory during said analyzing and said one or more spectra are not stored to non-volatile memory for output as a result of said analyzing.Join the waitlist — get patent alerts
Track US2013080073A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.