US 20020029235 A1 Abstract An apparatus and method for identifying clusters in two-dimensional data by generating a two-dimensional histogram characterized by a grid of bins, determining a density estimate based on the bins, and identifying at least one cluster in the data. A smoothed density estimate is generated using a Gaussian kernel estimator algorithm. Clusters are identified by locating peaks and valleys in the density estimate (e.g., by comparing slope of adjacent bins). Boundaries (e.g., polygons) around clusters are identified using bins after bins are identified as being associated with a cluster. Boundaries can be simplified (e.g., by reducing the number of vertices in a polygon) to facilitate data manipulation.
Claims(33) 1. A method for identifying clusters in two-dimensional data comprising:
generating a two-dimensional histogram characterized by a grid having an x-axis and a y-axis and a selected number of bins in the x-direction and a selected number of bins in the y-direction, said data comprising n pairs of points (x _{i}, y_{i}), i=1, . . . ,n, said histogram comprising fewer bins than said points; determining a density estimate based on said bins; and identifying at least one cluster in said data, said at least one cluster comprising a plurality of points which satisfy a selected density criteria. 2. A method as claimed in 3. A method as claimed in 4. A method as claimed in 5. A method as claimed in 6. A method as claimed in 7. A method as claimed in 8. A method as claimed in determining which of said bins correspond to respective peaks of said plurality of clusters using said slope; assigning said bins that correspond to said peaks with respective cluster identification codes; and assigning each of said bins associated with one of said peaks with the corresponding one of said cluster identification codes. 9. A method as claimed in 10. A method as claimed in 11. A method as claimed in 12. A method for identifying clusters in two-dimensional data comprising a plurality of points, the method comprising:
generating a density estimate based on said data; identifying at least one cluster in said data, said at least one cluster comprising a plurality of points which satisfy a selected density criteria; and determining a boundary around said at least one cluster. 13. A method as claimed in 14. A method as claimed in 15. A method as claimed in 16. A method as claimed in _{i}, y_{i}),i=1, . . . ,n, and said generating step comprises:
generating a two-dimensional histogram, said histogram comprising fewer bins than said points; and determining said density estimate based on said bins. 17. An apparatus for identifying clusters in two-dimensional data comprising:
a processing device; and a memory device coupled to said processing device for storing a cluster finder algorithm, said processing device being programmable in accordance with said cluster finder algorithm to generate a two-dimensional histogram characterized by a grid having an x-axis and a y-axis and a selected number of bins in the x-direction and a selected number of bins in the y-direction, said data comprising n pairs of points (x _{i}, y_{i}),i=1, . . . ,n, said histogram comprising fewer bins than said points, to determine a density estimate based on said bins, and to identify at least one cluster in said data, said at least one cluster comprising a plurality of points which satisfy a selected density criteria. 18. An apparatus as claimed in 19. An apparatus as claimed in 20. An apparatus as claimed in 21. An apparatus as claimed in 22. An apparatus as claimed in 23. An apparatus as claimed in 24. An apparatus as claimed in 25. An apparatus for identifying clusters in two-dimensional data comprising:
a processing device; and a memory device coupled to said processing device for storing a cluster finder algorithm, said processing device being programmable in accordance with said cluster finder algorithm to generate a density estimate based on said data, identify at least one cluster in said data, said at least one cluster comprising a plurality of points which satisfy a selected density criteria, and determine a boundary around said at least one cluster. 26. An apparatus as claimed in 27. An apparatus as claimed in 28. A method as claimed in _{i}, y_{i}),i=1, . . . ,n, and processing device is programmable to generate a two-dimensional histogram, said histogram comprising fewer bins than said points, and determine said density estimate based on said bins. 29. A computer program product for identifying clusters in two-dimensional data comprising a plurality of points, the computer program product comprising:
a computer-readable medium; and a cluster finder module stored on said computer-readable medium that generates a density estimate based on said data, identifies at least one cluster in said data, said at least one cluster comprising a plurality of points which satisfy a selected density criteria, and determines a boundary around said at least one cluster. 30. A computer program product as claimed in 31. A computer program product as claimed in 32. A computer program product as claimed in 33. A computer program product as claimed in _{i}, y_{i}), i=1, . . . ,n, said cluster finder module being operable to generate a two-dimensional histogram, said histogram comprising fewer bins than said points, and to determine said density estimate based on said bins.Description [0001] The present invention claims benefit under 35 U.S.C. § 119(e) of a U.S. Provisional Patent Application of Dwayne Yount et al. entitled “Hardware and Electronics Architecture for a Flow Cytometer”, Ser. No. 60/203,515, filed May 11, 2000, of a U.S. Provisional Patent Application of Michael Lock et al. entitled “Cluster Finder Algorithm for Flow Cytometer”, Ser. No. 60/203,590, filed May 11, 2000, of a U.S. Provisional Patent Application of Michael Goldberg et al. entitled “User Interface and Network Architecture for Flow Cytometer”, Ser. No. 60/203,585, filed May 11, 2000 and of a U.S. Provisional Patent Application of John Cardott et al. entitled “Digital Flow Cytometer”, Serial No. 60/203,577, filed May 11, 2000, the entire contents of each of said provisional patent applications being incorporated herein by reference. [0002] Related subject matter is disclosed in a copending U.S. Patent Application of Pierce O. Norton entitled “Apparatus and Method for Verifying Drop Delay in a Flow Cytometer”, Ser. No. 09/346,692, filed Jul. 2, 1999, in a copending U.S. Patent Application of Kenneth F. Uffenheimer et al. entitled “Apparatus and Method for Processing Sample Materials Contained in a Plurality of Sample Tubes”, Ser. No. 09/447,804, filed Nov. 23, 1999, and in a copending U.S. Patent Application of Dwayne Yount et al. entitled “A System and Method for Providing Improved Event Reading and Data Processing Capabilities in a Flow Cytometer”, Attorney Docket No. P-5098, filed even date herewith, the entire contents of each of these applications are incorporated herein by reference. [0003] 1. Field of the Invention [0004] The present invention relates generally to a method for locating clusters on a two-dimensional scatter plot by automatically defining a position of at least one variable position, geometric boundary surface on the scatter plot so as to enclose a group of the displayed particles in a data cluster. The boundary surface has a polygonal shape defined by a plurality of vertices about at least one cell cluster. The present invention further relates to generating a cluster using a two-dimensional density estimate whereby the data is binned in a histogram and the bin counts subjected to smoothing. Bins are then assigned to respective clusters whereby clusters are separated by valleys in the density estimate. [0005] 2. Description of the Related Art [0006] Flow cytometry, the measurement and/or separation of objects such as cells, nuclei, chromosomes and other particles in a moving liquid stream (“objects”), is well established as a valuable analysis tool in research and clinical laboratories. A discussion of the various principles, techniques and apparatus behind flow cytometry is set forth in an article by John L. Haynes, entitled “Principles of Flow Cytometry”, [0007] Flow cytometry comprises a well known methodology using multi-parameter data for identifying and distinguishing between different cell types in a sample. For example, the sample may be drawn from a variety of biological fluids, such as blood, lymph or urine, or may be derived from suspensions of cells from hard tissues such as colon, lung, breast, kidney or liver. In a flow cytometer, cells are passed, in suspension, substantially one at a time through one or more sensing regions where in each region each cell is illuminated by an energy source. The energy source generally comprises an illumination means that emits light of a single wavelength such as that provided by a laser (e.g., He/Ne or argon) or a mercury arc lamp with appropriate filters. Light at 488 mn is a generally used wavelength of emission in a flow cytometer having a single sensing region. [0008] In series with a sensing region, multiple light collection means, such as photomultiplier tubes (or “PMTs”), are used to record light that passes through each cell (generally referred to as forward light scatter), light that is reflected orthogonal to the direction of the flow of the cells through the sensing region (generally referred to as orthogonal or side light scatter) and fluorescent light emitted form the cell, if it is labeled with a fluorescent marker(s), as the cell passes through the sensing region and is illuminated by the energy source. Each of forward light scatter (or “FSC”), orthogonal or side light scatter (or “SSC”), and fluorescence emissions (or “FL1,” “FL2,”etc.) comprise a separate parameter for each cell (or each “event”). Thus, for example, two, three, four or more parameters can be collected (and recorded) from a cell labeled with two different fluorescence markers. Flow cytometers further comprise data acquisition, analysis and recording means, such as a computer, wherein multiple data channels record data from each PMT for the light scatter and fluorescence emitted by each cell as it passes through the sensing region. The purpose of the analysis system is to classify and count cells wherein each cell presents itself as a set of digitized parameter values. Typically, by current analysis methods, the data collected in real time (or recorded for later analysis) is plotted in 2-D space for ease of visualization. [0009] Such plots are referred to as “scatter plots” or “dot plots” and a typical example of a dot plot drawn from light scatter data recorded for leukocytes is shown in FIG. 1 of U.S. Pat. No. 4,987,086, the disclosure of which is hereby incorporated by reference in its entirety. By plotting orthogonal light scatter versus forward light scatter, one can distinguish between granulocytes, monocytes and lymphocytes in a population of leukocytes isolated from whole blood. By electronically (or manually) “gating” on only lymphocytes using light scatter, for example, and by the use of the appropriate monoclonal antibodies labeled with fluorochromes of different emission wavelength, one can further distinguish between cell types within the lymphocyte population (e.g., between T helper cells and T cytotoxic cells). U.S. Pat. Nos. 4,727,020, 4,704,891, 4,599,307, 4,987,086 and 6,014,904 describe the arrangement of the various components that comprise a flow cytometer, the general principles of use and one approach to gating on cells in order to discriminate between populations of cells in a blood sample. The disclosures of these patents are hereby incorporated by reference in their entireties. [0010] Of particular interest is the analysis of cells from patients infected with HIV, the virus which causes AIDS. It is well known that CD4 [0011] In both cases, a sample of whole blood is obtained from a patient. Monoclonal antibodies against CD3 (a pan-T lymphocyte marker), CD4 and CD8 are labeled directly or indirectly with fluorescent dye. These dyes have emission spectra that are distinguishable from each other. Examples of such dyes are set forth in Example 1 of U.S. Pat. No. 4,745,285, the disclosure of which is hereby incorporated by reference in its entirety. The labeled cells then are run on the flow cytometer and data is recorded. Analysis of the data can proceed in real time or be stored in list mode for later analysis. [0012] While data analyzed in 2-D space can yield discrete populations of cells, most often the dot plots represent projections of multiple clusters. As a result, often it is difficult to distinguish between cells which fall into regions of apparent overlap between clusters. In such cases, cells can be inadvertently classified in a wrong cluster, and thus, contribute inaccuracy to the population counts and percentages being reported. In blood from an HIV infected patient for example, over-inclusion of T cells as being CD4 [0013] One known method for solving this problem relies on a gravitational attractor consisting of a geometric boundary surface of fixed size, shape and orientation, but of variable position, and a computational engine by which the boundary surface positions itself optimally to enclose a cluster of multi-parameter events, with multiple attractors for simultaneously classifying multiple clusters of events within the same datastream or recorded data distribution. The strategy is to assign one attractor per population to be identified and/or sorted. This method is described in U.S. Pat. No. 5,627,040, the disclosure of which is hereby incorporated by reference in its entirety. However, there are some limitations to this method. For example, because of the fixed size, shape and orientation of the boundary surface, some cells can be inadvertently classified in a wrong cluster or omitted from inclusion within the boundary, and therefore contribute inaccuracy to the population counts and percentages being reported. Thus, there has been a need for a method for more accurately discriminating between clusters of cells, and therefore for more accurately identifying and/or sorting cells into different populations. [0014] The present invention provides a cluster finder algorithm that is operable to analyze a sample of two-dimensional data (e.g., obtained via flow cytometry) to locate clusters therein and to define boundaries around the clusters. [0015] In accordance with one aspect of the present invention, the boundaries are polygons and the cluster finder algorithm simplifies a boundary by reducing the number of vertices of the polygon to facilitate manipulation of the corresponding data by a user. [0016] In accordance with another aspect of the present invention, the cluster finder algorithm optimizes identification of cluster boundaries by generating a histogram of the data and then a smoothed density estimate of the histogram, as opposed to processing each of the data points. [0017] In accordance with still another aspect of the present invention, the grid structure imposed on the data by using a histogram facilitates location of peaks and valleys in the density estimate and therefore the identification of clusters in the data, as well as determination of boundaries of clusters. [0018] In accordance with an embodiment of the present invention, a method is provided for identifying clusters in two-dimensional data. The method comprises: (1) generating a two-dimensional histogram characterized by a grid having an x-axis and a y-axis and a selected number of bins in the x-direction and a selected number of bins in the y-direction, and the data comprising n pairs of points (x [0019] In accordance with another of the present invention, clusters are identified as comprising a group of bins in the histogram which are separated from other bins by a valley in the density estimate. The bins can be identified by comparing the slope of each of the bins with that of adjacent bins. Bins that correspond to peaks in the estimate can be assigned respective cluster identification codes, and bins associated with one of the peaks can be assigned the corresponding cluster identification code. The location of a boundary is therefore optimized by analyzing each of the bins to determine if adjacent bins have the same cluster identification code. Bins that have no adjacent bins with data or which have no adjacent bins with the same cluster identification code are used as exterior points for boundary determination. [0020] In accordance with another embodiment of the present invention, the cluster finder algorithm implementing the method described herein is implemented via a programmable processing device. A display provides a visual indication of the plurality of clusters. The processing device is operable to provide a user with the boundary of one of the plurality clusters on the display when selected via a user input device. The processing device can also alter a boundary of a cluster in response to a user commands generated via the user input device. The processing device facilitates batch processing by generating a template after a first data set is gated. The template facilitates processing other related data sets to locate corresponding clusters. [0021] The various objects, advantages and novel features of the present invention will be more readily appreciated from the following detailed description when read in conjunction with the accompanying drawings, in which: [0022]FIG. 1 is a flow chart illustrating a sequence of operations for identifying clusters in scatter plots in accordance with an embodiment of the present invention; [0023]FIG. 2 is an exemplary two-dimensional scatter plot; [0024]FIG. 3 is a three-dimensional plot of a density estimate of the scatter plot in FIG. 2 obtained via processing in accordance with an embodiment of the present invention; [0025]FIG. 4 depicts a grid provided on the scatter plot of FIG. 2 in accordance with an embodiment of the present invention; [0026]FIG. 5 is a two-dimensional histogram of the data from the scatter plot of FIG. 2; [0027]FIG. 6 depicts a labeled grid provided on the scatter plot of FIG. 2 to indicate cluster membership in accordance with an embodiment of the present invention; [0028]FIG. 7 is a contour plot of the scatter plot of FIG. 2 in accordance with an embodiment of the present invention; [0029] FIGS. [0030]FIG. 10 depicts polygonal boundaries encompassing the clusters shown in FIG. 7 in accordance with an embodiment of the present invention; [0031]FIG. 11 shows the effect of line simplification applied to the cluster boundaries shown in FIG. 10 in accordance with an embodiment of the present invention; and [0032]FIG. 12 is a block diagram of an apparatus constructed in accordance with an embodiment of the present invention. [0033] In accordance with an embodiment of the present invention, a cluster finder algorithm [0034] The cluster finder algorithm [0035] With reference to FIG. 1, the cluster finder algorithm [0036] 1. Generate a two-dimensional density estimate from the data; [0037] 2. Locate clusters in the density estimate; [0038] 3. Determine boundaries around clusters; and [0039] 4. Simplify the cluster boundaries into manageable polygons. [0040] Step 1. Generate a Two-dimensional Density Estimate from the Data [0041] To use the cluster finder algorithm [0042] As indicated by block [0043] While the theory and mechanics of density estimation are generally known, the cluster finder algorithm [0044] To create a two-dimensional histogram, a grid [0045] Binning the data is advantageous because it increases the speed of the algorithm by reducing the number of steps needed to create the density estimate. Most density estimation methods employ numerous operations on every point in the data set. This can be a significant burden when analyzing flow cytometry samples since these data sets typically contain tens of thousands of points and often exceed 100,000 points. The density estimation method of the present invention preferably operates only on the m x p histogram bin counts, that is, a number that stays fixed even as sample size increases. For example, if, for illustrative purposes, m=p=64, then density estimation in accordance with the present invention employs operations on 64×64=4096 bin counts even though samples may contain hundreds of thousands of data points. [0046] Once the data have been binned into a two-dimensional histogram, the Gaussian filter algorithm can be applied to the bin counts to obtain a smooth density estimate. While other routines such as a Fast Fourier Transform (FFT) can be used, a Gaussian filter algorithm such as the algorithm proposed by Ian T. Young and Lucas J. van Vliet in the article “Recursive Implementation of the Gaussian Filter in Signal Processing” 44:139-151 (1995), the disclosure of which is hereby incorporated by reference, is preferred since it is faster than any competitive methods. The filter is applied to the bin counts of each row of the two-dimensional histogram producing a smoothed version of the histogram shown in FIG. 5. Details of the filter equations are provided below after the steps of the algorithm [0047] Step 2. Locate Clusters in the Density Estimate [0048] In this step, which is illustrated at block [0049] Assigning cluster membership to the grid bins [0050] A “good” clustering involves associating bins that are separated from other clusters by a valley indicated generally at [0051] Finding the valleys in a density estimate is a relatively trivial task in one dimensional data, but becomes more complicated in data sets of two or more dimensions. In accordance with the present invention, this task is accomplished by linking data points to neighboring points that are “uphill” from them. In other words, for each point in the data set, (x [0052] where Z [0053] To illustrate this approach, consider the one-dimensional example illustrated in FIG. 8. The dots represent the height of a density estimate evaluated at a series of one-dimensional points. To assign the point marked with an x to a cluster, the algorithm [0054] As noted above, Koonst and Fukunaga's basic algorithm has been modified in accordance with the present invention to exploit the advantages of the grid structure imposed on the data and density estimate in Step 1. The main difference between the present invention and Koonst and Fukunaga's basic algorithm is that, with regard to the present invention, the neighbors of any point in a grid are known since they are fixed in space. In Koonst and Fukunaga's more generic approach, on the other hand, the neighbors of every point must be found through a search mechanism. This requirement is computationally prohibitive for large data sets. A second difference is that Koonst and Fukunaga's algorithm assigns cluster labels to each point in the data set, while the present invention only assigns labels to the bins in the grid. Again, this results in an improvement in computational efficiency for large data sets. For example, with a sample of 100,000 data points, Koonst and Fukunaga's approach assigns labels to each of the 100,000 points, while the algorithm of the present invention assigns labels to only the 64 ×64 =4096 bins in the grid. A preferred embodiment for cluster assignment step (block [0055] Step 3. Determine Boundaries around Clusters [0056] The method of determining boundary nodes for each cluster will now be described. For each grid point or bin [0057] The cluster boundary points determined above do not necessarily define the boundary in a clear, geometric manner. In accordance with the present invention, they are resequenced to form a continuously defined boundary, as illustrated in FIG. 10. This task has been performed by others using conventional, general numerical methods such as simulated annealing as described in W. H. Press, S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery, “Numerical Recipes in Fortran, Second Edition”, Cambridge University Press, 436-448 (1992), the disclosure of which is hereby incorporated by reference. These general processes, however, are highly inefficient for the implementation of the present invention. [0058] The algorithm [0059] The majority of the points that get processed have only two neighbors. In this case, examination of the table is a simple decision process. However, the process can become more complicated when a point has more than two neighbors. For that point, one of the neighbors is arbitrarily chosen, and the process carries on to the end. At the end, the table is reviewed to ascertain if any points have been missed. If not, the algorithm [0060] Step 4. Simplify the Cluster Boundaries into Manageable Polygons [0061] As can be seen in FIG. 10, the boundaries [0062] The purpose of Step 4 is to simplify the boundaries [0063]FIG. 11 illustrates the result of the boundary simplification step. As shown in FIG. 11, the boundaries [0064] Details of the Gaussian Filter used to Create the Smooth Density Estimate in Step 1 [0065] The algorithm used to implement a Gaussian filter was derived from the paper “Recursive implementation of the Gaussian filter”, by Ian T. Young and Lucas J. van Vliet in [0066] This algorithm uses a recursive implementation of a Gaussian filter. The implementation is faster than other traditional methods such as Fast Fourier Transforms (FFTs), straightforward convolution of the discretized data with samples of a Gaussian density function, or multiple convolutions with a uniform filter kernel. [0067] The following equations are used in the algorithm as described below: [0068] Equation 1: 0.5<σ<2.5 σ≧2.5 [0069] Equation 2: b b [0070] Equation 3 —normalization constant: [0071] Both forward and backward filters have the same normalization constant, B, where [0072] The input data are first filtered in the forward direction as described in the difference equation 4. The output of this result (hereinafter referred to as w[n]) is then filtered in the backward direction according to the difference equation 5. [0073] Equation 4 — forward filter: [0074] Equation 5 - backward filter: out[n] =B w[n] +(b [0075] Once the target smoothing parameter, sigmas, is selected, a procedure is performed by the algorithm 20 to determine values for the five coefficients of the recursive filter. The procedure involves computational solution of closed-form algebraic equations, as follows, in the x and y dimensions. First, equation 1 is utilized to determine the coefficient q. Second, the values for coefficients b [0076] C. Optionally eliminate minor clusters. [0077] A. Eliminate Outliers: [0078] Outliers are eliminated by zeroing out all bins where the density estimate is below a selected value CUTFRACT1 times the maximum value in the density estimate. The value used for CUTRACT1 can be determined experimentally and is preferably 0.03, although other values can be used. For example, the algorithm 20 can perform the following steps: [0079] 1) Iterate over all the bins in the density estimate to determine maxDensity, that is, the maximum density value in the histogram; [0080] 2) Compute the minimum density threshold, e.g., minThreshold=CUTFRACT1 * maxDensity; and p 3) Set to 0 any bin with a count less than minThreshold. [0081] B. Find Clusters [0082] The algorithm 20 can then perform the following steps: [0083] 1) Begin with a smooth density estimate evaluated on a grid; [0084] 2) Find the parent for each grid point using the steepest ascent algorithm: [0085] a) Note: Calculating the actual slope can a square root operation, the expense and time for which can be avoided because the algorithm [0086] b) If the current node is not lower than any surrounding nodes, a determination is made as to whether the current node is the parent node; and [0087] c) If the current node is the parent node, this indicates that a new cluster has been found. The new cluster is assigned a cluster ID and marked as having no parent (parent ID=self); [0088] 3) Label each root with the ID of the cluster to which it belongs; [0089] 4) When all roots are located, give the same label to all points linked to a given root: [0090] a) For each node, get the ID of its parent node; [0091] b) Recursively find the ID of its parent node until a node is reached that has no parent (e.g., that node is the true peak of the cluster); and [0092] c) The label of that node as the cluster ID. Assign that cluster ID as the label of the current node. [0093] C. Eliminate minor clusters(Optional) [0094] Very small clusters can be optionally discarded to counteract the effects of white space and ripples in the density estimate (this may lead to some unclassified grid bins.) The algorithm [0095] 1) Sort clusters by cumulative densities; [0096] 2) Calculate the total density of the density estimate; [0097] 3) Eliminate those clusters less than a selected value CUTFRACT2 of the total density, where the value of CUTFRACT2 can be determined previously by experimentation and is preferably 0.05; and [0098] 4) Relabel nodes (discard labels of clusters that were eliminated in the previous step). [0099] Programmed Apparatus [0100] With reference to FIG. 12, the cluster finder algorithm [0101] Automated Data Analysis [0102] The process described in the previous section was discussed in the context of processing a single data set. In a clinical or laboratory setting, however, multiple data sets often need to be processed in succession (e.g., via batch processing). Examples of when a batch process is appropriate include, but are not limited to: (i) a clinical trial where multiple samples from different donors need to be analyzed and compared; and (ii) research involving multiple measurements on the same sample to, for example, average the results into one overall assessment. [0103] Unfortunately, gating of cluster populations in both of these scenarios is commonly done manually, that is, by hand. Gating data by hand is cumbersome, very time intensive, and often prone to error due to extreme variability of experience from technician to technician. [0104] The present invention automates batch processing of multiple data sets in the following manner. The user first gates a single representative data file using the interactive process described in the previous section. The cluster finder algorithm [0105] Utilizing this overall process, the present invention can gate an entire database of similarly obtained data in an automatic manner without any user interaction other than the initial gates selected by the user on the first representative data set. Accordingly, a significant increase in productivity is realized by a laboratory that utilizes the batch processing aspect of the present invention. Multiple templates can be developed for each assay that a primary investigator uses in his or her laboratory. Such action eliminates variability in gating style that may exist from technician to technician within the same laboratory. In addition, a technician would no longer need to be an expert in gating a particular assay, so long as the correct template was formed beforehand. [0106] Although only a few exemplary embodiments of this invention have been described in detail above, those skilled in the art will readily appreciate that many modifications are possible in the exemplary embodiments without materially departing from the novel teachings and advantages of this invention. Accordingly, all such modifications are intended to be included within the scope of this invention as defined in the following claims. Referenced by
Classifications
Legal Events
Rotate |