Christopher Jones


Microarray::File::Data::GenePix - A Perl module for managing microarray Axon GenePix data files


        use Microarray::File::Data::GenePix;

        my $data_file = genepix_file->new("/file.csv");
        my $image_file = genepix_image->new("/image.tif");


Microarray::File::Data::GenePix is an object-oriented Perl module for managing microarray data files created by Axon's GenePix software. It inherits from Microarray::File, and maps data fields in the GenePix file to those used by Microarray::File::Data. This module also parses GenePix image header info, although the amount of information contained there is limited.


genepix_file methods

Where a method exists for "channel1" in the following methods, there is an equivalent method for "channel2".

General methods - typically retrieving information from the header


Measured in micrometers.


i.e. Cy3, or Cy5.


The full path of the image file when saved by GenePix.


The full path of the GAL file, when/if imported by GenePix during data extraction.


No idea where this comes from. But its there in the data file.


GenePix numbers blocks consecutively, and does not record their layout in terms of rows/columns. While it isn't really very useful in the real World, this method returns this number.

spot_columns, spot_rows

Number of columns and rows of spots in each block.

The following methods don't really need any explanation;

analysis_software, num_channels, slide_barcode, channel1_pmt, channel1_laser

Spot methods

Pass the data row index to these methods to return information for a particular spot. The first row of data is index 0.

block, spot_row, spot_col

While there are no 'block_row' or 'block_col' equivalents in a GenePix file, these methods can be used and will return the block_number. Also note there is no 'spot_index' field in GenePix. And to think that Axon invented the array file format.....

feature_id, synonym_id

The 'Name' and 'ID' columns respectively.

x_pos, y_pos

Spot centre location in pixels, from the top-left of the image.


The flag associated with the spot.

ch1_median_f, ch1_mean_f, ch1_sd_f

Median, mean and SD values for the fluorescence measurements of spot pixels.

ch1_median_b, ch1_mean_b, ch1_sd_b

Median, mean and SD values for the fluorescence measurements of background pixels.

ch1_b1sd, channel1_quality, channel1_sat

The percent of spot pixels 1 SD above background, percent of spot pixels 2 SD above background, and percent of spot pixels that are saturated.


GenePix does not return signal-to-noise ratios, so this is calculated as the median signal/background SD.

spot_diameter, spot_pixels

Diameter is measured in microns.

genepix_image methods

GenePix can save images as individual TIFF files, or both images in a single file. Channel specific information, such as the laser power and PMT, is not available in the combined file. To be honest, Axon have completely missed the boat when it comes to understanding the point of having information in the TIFF header - there's very little here that helps you keep track of your experiments, other than the slide barcode. Compare the information here with what is returned from a ScanArray image header, and you'll see what I mean.


Returns the slide barcode associated with the scan.


The wavelength of the laser used to generate the image. Returns both wavelengths from combined image files.

pmt_gain, laser_power, laser_power_watts, scan_power

PMT and laser powers used in the scan - return null from combined image files. laser_power() and scan_power() return the same value, which is the laser power as a percentage. laser_power_watts() returns that actual mW value of the laser power at the time of scanning.

image_name, image_width, image_height, image_datetime

Basic image information.

image_scanner, collection_software

Scanner model and serial number, and some strange code that doesn't appear to have anything to do with the software version. Go figure....


Returns the pixel size in microns. This is calculated from the 'XResolution' value, which describes how many pixels there are in a specified unit. For the Axon4000B this is set to 1cm, and although we haven't tested it for other Axon scanners we're assuming it is likely to be the same.

Other methods returning undefined values

There are a few methods that return undefined values, for compatibility with other Microarray::File::Data modules (actually, that means ::Quantarray). These are image_user_name, fluor_name, laser_id and filter_id.


Microarray, Microarray::File, Microarray::File::Data, Image::ExifTool


Christopher Jones, Gynaecological Cancer Research Laboratories, Institute for Women's Health, University College London.


Copyright 2008 by Christopher Jones, University College London

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.