Quality Control for spotted arrays

May 5, 2004

(Jean) Yee Hwa Yang1, Agnes Paquet2, Andrea Barczak2

1. Department of Medicine, University of California, San Francisco http://www.biostat.ucsf.edu/jean

2. Functional Genomics Core Facility, University of California, San Francisco

apaquet@medsfgh.ucsf.edu

# 1. Getting started with arrayQuality

### Installing arrayQuality

To install the arrayQuality package for Windows operating systems, first start R and make sure you are connected to the Internet. Then, select “Packages” from the menu, and click on “Install package(s) from Bioconductor…”. Select arrayQuality in the list in the pop-up window, and click on “OK”.

### Using arrayQuality functions PRv9mers, PRvQCHyb and gpQuality

These functions are provided to automatically read in data, generate some diagnostic plots, and save them as images in png format. To use them, follow the steps below:

1. Create a directory and move the image processing output files (e.g. .gpr files) of the slides of interest to this directory. Make sure that all files in the directory come from the SAME print-run (same GAL file).

2. Start R, and change R working directory to the one you have created. In the R menu, select File, then click on “Change dir…”. Browse to your directory from the pop-up window, or enter it manually, and click OK. To double check that you are in the correct directory: in the File menu, click on “Display file(s)…”.

To load the package in your R session: type

> library(arrayQuality)

3. For 9-mers analysis, run the following command in R:

> PRv9mers(prname=”12Mm”)

where prname is the name of the print-run.

4. For QCHyb analysis, run the following command in R:

> PRvQCHyb(prname=”9Mm”)

where prname is the name of the print-run.

This function supports Mouse (Mm) genome only at the moment.

5. For general hybridization quality of GenePix format files (.gpr files), run the following command in R:

> results <- gpQuality(organism="Mm")

This function supports Mouse (Mm) and Human (Hs) genomes only.

6. Each function will generate specific plots and files. For more details about each function’s arguments and results, please refer to the corresponding section of this document and to the online help.

# 2. Introduction to microarray quality

A microarray experiment is composed of several steps, including experimental design, sample preparation, and statistical analysis. They are represented in the microarray lifecycle below. As microarray technology is complex and very sensitive, it is important to control each step’s performance before going to the next one. Controls are also a good way to trace back the cycle to understand potential causes for upstream problems.

Microarray experiment lifecycle

For spotted array experiments, quality controls can be summarized into 4 steps:

1. Print quality

- 9mers hybridization

- Quality Control hybridization

2. mRNA quality
3. Array hybridization quality
4. Spot quality

Each step must be performed in a sequential order, as represented in the diagram below:

Quality Control for spotted arrays experiment

Our package provides graphical tools to look at print-run quality and array hybridization quality.

A) Print quality:

It is an essential component of a printed array experiment, as any print pin, probe or slide surface defect will affect the quality of hybridization to the slide, and this can’t be fixed by statistics. Only prints that did pass the quality control check can enter the analysis cycle.

B) Hybridization quality.

This is a global assessment of the hybridization performance. It helps determine for example any problem with the dyes, or uneven hybridization. Then, once you have determined that your hybridization is good, you can look at each individual spot quality, remove bad spots, and perform statistical analysis.

# 3. Print-run quality control

When a print-run is completed, it is necessary to verify the quality of the resulting arrays. This can be done by using two kinds of hybridization to the new slides. The first one uses small oligonucleotides (random 9-mers), which will hybridize to each probe. This hybridization will help to determine the quality of spot morphology as well as the presence or absence of spotted oligonucleotides. The resulting data will be used to create a list of all missing spots. The second one, which we will call Quality Control Hybridization (QCHyb), uses cDNA from specific cell lines (e.g. liver, lung, Universal Human Pool). It is aimed to be a more quantitative description of the slides. QCHybs are also used to verify accuracy of GAL files, number of missing spots, binding capacity, background signal intensity…In addition, the QCHybs can be used to help compare results from independent runs.

The arrayQuality package provides specific tools to help assess quality of slides for both 9-mers and QC hybridization.

## 9-mers hybridizations

arrayQuality 9-mers specific graphical function is called PRv9mers(). It runs using one single command line script. To use it:

- Copy the 9-mers hybridization gpr files from the SAME print-run (same GAL file) in a directory.

- Change R working directory to the one containing your gpr files

- Run:

> PRv9mers(prname=”12Mm”).

The prname argument represents the name of your print-run. For more details about other arguments, please refer to the online manual.

### Results

PRv9mers()provides 2 types of results:

1. Diagnostic plots as image in .png format for each tested slide

2. An Excel file containing for each spot on the slide:

- The probability of being present or absent (p from EM algorithm)

A spot is considered absent if p < 0.5.

- The raw signal intensity (Signal column) or average raw signal intensity if several files are tested together for each spot.

3. An Excel file containing all missing probe ids, to be used as a quicklist in Acuity.

### Description of the diagnostic plots

9-mers diagnostic plots are composed of 3 sets of plots.

1. The first column represents boxplots of log intensity, by plates (top) and by print-tip group (bottom).

2. Spatial plot of intensity. This helps to locate missing spots. The color scale reflects the signal intensity, the darker the color of the plot, the stronger the signal. Missing spots are represented in white.

3. Density plot of the foreground and background log intensity.

1. Foreground density plot: it should be composed of 2 peaks, a small one in the low intensity region for missing spots, and a higher one representing the bulk of the data. The number of present and missing spots, excluding empty controls, estimated by EM algorithm is indicated on the graph.

2. Background density plot: one peak in the low intensity region. If a slide is of good quality, the background peak should not be inside the foreground peak corresponding to the bulk of the data.

### Example

This example uses 9-mer hybridization data performed in the Functional Genomics Core Facility in UCSF. This print-run was created using Operon Version 2 Mouse oligonucleotides.

> library(arrayQuality)

> datadir <- system.file("data", package="arrayQuality")

>PRv9mers(fnames="12Mm250.gpr",path=datadir, prname="12Mm")

### Things to look at on the 9-mers diagnostic plots:

Boxplots:

In this example, you can notice on the boxplot by plates (top left corner) that plates 44 and 48 are covering a much wider range than the others. Plate 44 contains mostly empty wells, as designed by Operon.

Spatial plots:

Top right corner white spots come from the empty spots.

Density plot:

Compare foreground and background peaks, using the X-axis scale. They should be clearly separated. The number of missing spots should be low.

Conclusion for slide 12Mm250:

9-mers hybridization results are good. Missing spots ids will be incorporated in the analysis later, using the quicklist.

## Quality Control hybridizations

9-mers hybridizations help verify that oligonucleotides have been spotted properly on the slides. The next print-run quality control step will be:

1. Detect any difference in overall signal intensity compared to other print-runs

a. 70-mers oligonucleotides hybridizations

b. Selection of several test slides to ensure that the same quantity of material was spotted across the platter, as a print-run will generate 255 slides using the same well for one probe. QCHybs are performed using one slide from the beginning of the print, one from the middle, one from the end (slides numbers 20,100 and 255 in the Functional Genomics Core Facility).

2. Check if the GAL file was generated properly, i.e. check that no error was made with ordering or orientation of the plates during the print.

3. Reproducibility:

A good way to verify the quality of a new print is to hybridize known samples to new slides. Then, we can compare signal intensity from the new slides to existing data, and check that there is no loss in signal. Mvalues for known samples should remain the same.

Example of samples used for QCHybs includes Human Reference pool, Mouse liver, Mouse lung, with dye swaps.

ArrayQuality QCHybs specific tool is a function called PRvQCHyb(). Only one command line script is needed to run it:

- Copy the QCHybs gpr files from the SAME print-run (same GAL file) in a directory.

- Change R working directory to the one containing your gpr files

- Run PRvQCHyb(prname="9Mm")

For more details about its arguments, please refer to the online manual.

### Results

PRvQCHyb() returns a diagnostic plot as an image in .png format for each tested slide.

Restriction

PRcQCHyb() supports Mouse genome (Mm) only.

### Colors

Red = positive controls

Blue= empty, negative controls

Green = probes

White=missing spots

### Description of the diagnostic plots

1. MA-plot of raw intensity. No background subtraction is performed. The colored lines represent the loess curves for each print-tip group. Red dots correspond to GenePix flagged spots.

2. Boxplot of raw Mvalues by print-tip group, without background subtraction.

3. Spatial plot of rank of raw Mvalues (no background subtraction): Each spot is ranked according to its M value, and receives a color matching with its rank. Missing spots are represented as white squares.

4. Spatial plot of A values. The color indicates the strength of the signal intensity, i.e. the darker the color, the stronger the signal. Missing spots are represented in white.

5. Histogram and overlay density of the signal-to-noise log-ratio for Cy5 and Cy3 channels. The mean and the variance of the signal are printed on top of the histogram.

6. Comparison of Mvalues of probes known to be differentially expressed from the tested array to average Mvalues obtained during previous hybridizations. This plot is aimed at verifying the reproducibility of print-runs. The dotted lines are the diagonal (no change) and the +2/-2 fold change lines. Each probe is represented by a number, and described in the file MmDEGenes.xls.

7. Dot plot of controls A values. Controls with more than 3 replicates are represented on the Y-axis, positive controls in red, negative control in blue and empty controls in turquoise. No background subtraction.

### Example

Data for this example was provided by the Functional Genomics Core Facility in UCSF. We have tested slide number 137 from print-run 9Mm. This print-run uses Operon Version 2 Mouse oligos. Results are represented figure 4.

> library(arrayQuality)

> PRvQCHyb(fnames=” 9Mm137.png”, prname="9Mm")

Diagnostic plot for QCHyb

### Things to look at on the QCHyb diagnostic plot:

MA-plot:

Saturation, trend of loess curves.

Boxplot:

Look for any variation in print-tip group log-ratios.

Spatial plots:

Hybridization on this slide seems even, with a border effect in the bottom part of the slide. Signal intensity a bit low.

Signal to Noise Ratio:

The SNR is a good indicator for dye problems. The negative controls and empty controls density lines should be closer, almost superimposed.

MM-plot of know Differentially-Expressed genes (DE):

Most of the spots should lie between the +2/-2 fold-change regions. If the technique was perfect, you should see a straight line on the diagonal. If any probe falls off this region (number 29 here), you can look up its number in our probe list in MmDEgenes.xls and get more information about it.

Dot-plot:

Intensity of positive controls (red) should be in the high-intensity region, negative (blue) and empty controls (turquoise) should be in the lower intensity region. Positive controls range and negative/empty controls range should be separated.

Replicate spots signal should be as tight.

Conclusion:

This print-run quality is good.

# 4. General hybridization quality

Assessing the quality of hybridization is the last step of quality control in the microarray experiment lifecycle. It is aimed at verifying the performance of your hybridization, given the good quality of the slide, before starting your statistical analysis of the data. This is where you determine if you experiment quality is good enough to enter your dataset. For example, you will need to remove any hybridization with high or low SNR, or large artifacts.

Our package provides two kinds of quality control plots. The first one is a qualitative quality control measurement, as a diagnostic plot. It is a quick visual way to determine hybridization quality gathering information from several statistical tools. The second one is a more quantitative measure of quality. We extract some statistical measures from the tested slide. Then, we compare them to results obtained for a database of reference slides of “good quality”, to assess the quality of the hybridization. This comparison is visualized through a comparative boxplot. All results are then gathered in a HTML report.

To use this function, you will just need to type one command line script in R.

- Copy the gpr files from the SAME print-run (same GAL file) in a directory.

- Change R working directory to the one containing your gpr files

- Run:

> gpQuality(organism=”Mm”).

You can also specify you own database of good quality slides using the functions globalQuality and qualRefTable. For more details about these functions, please refer to the online manual.

### Restrictions

This function supports Mouse (Mm) and Human (Hs) genomes only.

### Results

gpQuality()plots are saved as 2 images in png format for each tested slide. All the results are also displayed in a HTML quality report. For each slide, you will find on the report how many of your slide’s results are out of range. If you want to specify a directory to store the results, you can do it by modifying the argument resdir accordingly.

gpQuality()returns a list of 3 objects:

- A marrayRaw object describing all tested slides.

- A score matrix

- A matrix containing your slide quality results.

Description of the diagnostic plots:

1. MA-plot of raw M values, no background subtraction, with loess curve for each print-tip group. The red dots are the positive controls.

2. MA-plot of normalized data density (print-tip loess normalization).

3. Spatial plot of raw M values ranks: each spot is ranked according to its M value and receives a color matching with it. Missing spots are represented as white squares.

4. Spatial plot of normalized M values ranks (print-tip loess normalization). Each spot is ranked according to its M value, and receives a color matching with its rank. Missing spots are represented as white squares.

5. Spatial plot of raw A values. The color indicates the strength of the signal intensity, i.e. the darker the color, the stronger the signal. Missing spots are represented in white.

6. Histogram and overlay density of the signal-to-noise log-ratio for Cy5 and Cy3 channels. The mean and the variance of the signal are printed on top of the histogram.

7. Dot plot of controls normalized M values. Controls with more than 3 replicates are represented on the Y-axis, positive controls in red, negative control in blue and empty controls in turquoise.

8. Dot plot of controls A values. Controls with more than 3 replicates are represented on the Y-axis, positive controls in red, negative control in blue and empty controls in turquoise.

### Description of the comparative Boxplot:

We have chosen a wide range of measure to quantify the quality of the hybridization: single channel measures (range of foreground signal, MAD of background, signal to noise ratio…), two channel measures (median A values for each type of controls, amount of normalization needed…), percentage of flagged spots... We have negated some of them to penalized poor quality results.

- On the left side: names of the statistical measures, a – sign of front of the name indicating a penalized measure.

- For each measure, we have represented the boxplot of the reference slides values.

- Red dots: they represent the results of your slide. They are plotted on top of the boxplot for an easier comparison.

- We have scaled all the results to be able to compare them on the same graph.

- The numbers printed on the side of each boxplot correspond to the 1st and 3rd quantiles before scaling.

- On the right side: for each measure, we have printed 2 values. The first one is the percentage of reference slides measures under your slide’s result. The second one your slide result before scaling.

### Example

Data for this example was provided by the Functional Genomics Core Facility in UCSF. We have tested slide number 137 from print-run 9Mm. This print-run uses Operon Version 2 Mouse oligos. Results are represented figure 4.

> library(arrayQuality)

> gpQuality(fnames="9Mm137.gpr", organism="Mm")

Diagnostic plot for general hybridization quality

### Things to look at in the diagnostic plot:

MAplot:

Saturation of spots can be due to bad PMT settings. The loess curves for each print-tip group gives information on the amount of normalization needed.

Density plot:

It gives you information on the bulk of your data intensity (low/high signal)

Spatial plot of raw data:

It gives a quick way to visually detect uneven hybridization and missing spots

Spatial plot of normalized data:

Verify that normalization removed any spatial effects.

SNR histograms:

The mean of the SNR log-ratio is a good indicator for dye problems. Density lines of empty and negative controls should be as close as possible.

Dot-plots:

Controls Mvalues should be tight, and close to 0.

A values may cover a wider range, but Positive controls and Negative/Empty controls should be separated.

Conclusion:

This slide is of good quality.

Comparative boxplot