The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<head>
<!-- Generated by perlmod2www.pl -->
<title>
CDF documentation.
</title>
</head>
<body bgcolor="white">
<HR><H4>Bio::Affymetrix</H4>
<H3>CDF</H3>
<A NAME="TOP"></A>
<TABLE BORDER="1" WIDTH="100%"><TR>
<TD><A HREF="#SUMMARY">Summary</A></TD>
<TD><A HREF="#vardefs">Package variables</A></TD>
<TD><A HREF="#SYNOPSIS">Synopsis</A></TD>
<TD><A HREF="#DESCRIPTION">Description</A></TD>
<TD><A HREF="#General">General documentation</A></TD>
<TD><A HREF="#Methods">Methods</A></TD>
</TR></TABLE><HR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR><TD BGCOLOR="#ffae84"><B>Summary</B></TD></TR>
</TABLE>
<TABLE BORDER="0" WIDTH="100%"><TR><TD><pre><B>Bio::Affymetrix::CDF</B>- parse Affymetrix CDF files<BR></pre></TD></TR>
</TABLE>
<A NAME="vardefs"></A>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#ffae84"><TD><B>Package variables</B></TD>
<TD ALIGN="RIGHT"><A HREF="#TOP">top</A></TD></TR></TABLE><TABLE BORDER="0" WIDTH="100%"><TR><TD COLSPAN="2">No package variables defined.</TD></TR>
</TABLE>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#ffae84"><TD WIDTH="150"><B>Included modules</B></TD><TD ALIGN="RIGHT"><A HREF="#TOP">top</A></TD></TR></TABLE><TABLE BORDER="0"><TR><TD COLSPAN="2"><b><font color="#0000ff"><a href="CDF/Probeset.html">Bio::Affymetrix::CDF::Probeset</a></font></b> </TD></TR>
<TR><TD COLSPAN="2"><b><font color="#0000ff">strict</font></b></TD></TR>
<TR><TD COLSPAN="2"><b><font color="#0000ff">warnings</font></b></TD></TR>
</TABLE>
<A NAME="SYNOPSIS"></A>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#ffae84"><TD><B>Synopsis</B></TD><TD ALIGN="RIGHT"><A HREF="#TOP">top</A></TD></TR></TABLE><TABLE BORDER="0"><TR><TD COLSPAN="2"><pre>use Bio::Affymetrix::CDF;<BR><BR># Parse the CDF file<BR><BR>my $cdf=new CDF();<BR><BR>$cdf-&gt;parse_from_file(&quot;foo.cdf&quot;);<BR><BR># Find some fun facts about this chip type<BR><BR>print $cdf-&gt;rows().&quot;,&quot;.$cdf-&gt;cols().&quot;\n&quot;;<BR><BR>print $cdf-&gt;version().&quot;\n&quot;;<BR><BR># Print out all of the probeset names on this chip type<BR><BR>foreach my $i (@{$chp-&gt;probesets}) {<BR>    print $i-&gt;name().&quot;\n&quot;;<BR>}<BR></pre>
</TD></TR></TABLE>
<A NAME="DESCRIPTION"></A>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#ffae84"><TD><B>Description</B></TD><TD ALIGN="RIGHT"><A HREF="#TOP">top</A></TD></TR></TABLE><TABLE BORDER="0"><TR><TD COLSPAN="2"><pre>The Affymetrix microarray system produces files in a variety of<BR>formats. If this means nothing to you, these modules are probably not<BR>for you :). This module parses CDF files. Use this module if you want<BR>to find out about the design of an Affymetrix CHP, or you need the<BR>object for another one of the modules in this package.<BR><BR>All of the Bio::Affymetrix modules parse a file entirely into<BR>memory. You therefore need enough memory to hold these objects. For<BR>some applications, parsing as a stream may be more appropriate-<BR>hopefully the source to these modules will give enough clues to make<BR>this an easy task. This module in particular takes a lot of memory if<BR>probe information is also stored (about 150Mb). Memory usage is not too<BR>onorous (about 15Mb) if probe level information is omitted.<BR></pre>
<pre>You fill the object filled with data using the<BR>parse_from_filehandle, parse_from_string or parse_from_file<BR>routines. You can get/set various statistics using methods on the<BR>object.<BR><BR>The key method is probesets. This returns an array of<BR>Bio::Affymetrix::CDF::Probeset objects. These contain data about the<BR>probesets.<BR></pre>
</TD></TR></TABLE>
<A NAME="Methods"></A>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0"><TR BGCOLOR="#ffae84"><TD><B>Methods</B></TD><TD ALIGN="RIGHT"><A HREF="#TOP">top</A></TD></TR></TABLE>
<TABLE BORDER="1" CELLSPACING="5"><TR><TD><B>_next_line</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE1">Code</A></TD></TR>
<TR><TD><B>_parse_chip_section</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE2">Code</A></TD></TR>
<TR><TD><B>_parse_qc_section</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE3">Code</A></TD></TR>
<TR><TD><B>_parse_unit_section</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE4">Code</A></TD></TR>
<TR><TD><B>_split_line</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE5">Code</A></TD></TR>
<TR><TD><B>cols</B></TD><TD><A HREF="#POD1">Description</A></TD><TD><A HREF="#CODE6">Code</A></TD></TR>
<TR><TD><B>name</B></TD><TD><A HREF="#POD2">Description</A></TD><TD><A HREF="#CODE7">Code</A></TD></TR>
<TR><TD><B>new</B></TD><TD><A HREF="#POD3">Description</A></TD><TD><A HREF="#CODE8">Code</A></TD></TR>
<TR><TD><B>original_format</B></TD><TD><A HREF="#POD4">Description</A></TD><TD><A HREF="#CODE9">Code</A></TD></TR>
<TR><TD><B>original_max_unit</B></TD><TD><A HREF="#POD5">Description</A></TD><TD><A HREF="#CODE10">Code</A></TD></TR>
<TR><TD><B>original_num_qc_units</B></TD><TD><A HREF="#POD6">Description</A></TD><TD><A HREF="#CODE11">Code</A></TD></TR>
<TR><TD><B>original_number_of_probes</B></TD><TD><A HREF="#POD7">Description</A></TD><TD><A HREF="#CODE12">Code</A></TD></TR>
<TR><TD><B>original_version</B></TD><TD><A HREF="#POD8">Description</A></TD><TD><A HREF="#CODE13">Code</A></TD></TR>
<TR><TD><B>parse_from_file</B></TD><TD><A HREF="#POD9">Description</A></TD><TD><A HREF="#CODE14">Code</A></TD></TR>
<TR><TD><B>parse_from_filehandle</B></TD><TD><A HREF="#POD10">Description</A></TD><TD><A HREF="#CODE15">Code</A></TD></TR>
<TR><TD><B>parse_from_string</B></TD><TD><A HREF="#POD11">Description</A></TD><TD><A HREF="#CODE16">Code</A></TD></TR>
<TR><TD><B>probesets</B></TD><TD><A HREF="#POD12">Description</A></TD><TD><A HREF="#CODE17">Code</A></TD></TR>
<TR><TD><B>rows</B></TD><TD><A HREF="#POD13">Description</A></TD><TD><A HREF="#CODE18">Code</A></TD></TR>
</TABLE>
<A NAME="MethDesc"></A>
<HR><H2>Methods description</H2>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_cols"></A><A NAME="POD1"></A><B>cols</B></TD><TD><A HREF="#CODE6">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD>prev</TD><TD><A HREF="#POD2">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	integer $cols (optional)<BR>  Example    : 	my $name=$cdf-&gt;cols()<BR>  Description: 	Get/set the number of cols in this chip<BR>  Returntype : integer<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_name"></A><A NAME="POD2"></A><B>name</B></TD><TD><A HREF="#CODE7">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD1">prev</A></TD><TD><A HREF="#POD3">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	string $name (optional)<BR>  Example    : 	my $name=$cdf-&gt;name()<BR>  Description: 	Get/set the name of this chip type (e.g. ATH1-121501)<BR>  Returntype : string<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_new"></A><A NAME="POD3"></A><B>new</B></TD><TD><A HREF="#CODE8">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD2">prev</A></TD><TD><A HREF="#POD4">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : none<BR>  Example    : my $cdf=new <B>Bio::Affymetrix::CDF</B>();<BR>  Description: constructor for CDF object<BR>  Returntype : new Bio::Affmetrix::CDF object<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_original_format"></A><A NAME="POD4"></A><B>original_format</B></TD><TD><A HREF="#CODE9">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD3">prev</A></TD><TD><A HREF="#POD5">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : 	none<BR>  Example    : 	my $format=$cdf-&gt;original_format()<BR>  Description:	Returns the format of the CDF file parsed. Currently<BR>MAS5 only<BR>  Returntype : 	string (&quot;MAS5&quot;)<BR>  Exceptions : 	none<BR>  Caller     : 	general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_original_max_unit"></A><A NAME="POD5"></A><B>original_max_unit</B></TD><TD><A HREF="#CODE10">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD4">prev</A></TD><TD><A HREF="#POD6">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : 	none<BR>  Example    : 	my $max_units=$cdf-&gt;original_max_units()<BR>  Description: 	Get the max unit number in the CDF file. Fairly useless.<BR>  Returntype : integer<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_original_num_qc_units"></A><A NAME="POD6"></A><B>original_num_qc_units</B></TD><TD><A HREF="#CODE11">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD5">prev</A></TD><TD><A HREF="#POD7">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : 	none<BR>  Example    : 	my $max_units=$cdf-&gt;original_num_qc_units()<BR>  Description: 	Get the number of QC units in the CDF file. Only piece<BR>of QC information obtainable using this piece of software.<BR>  Returntype : integer<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_original_number_of_probes"></A><A NAME="POD7"></A><B>original_number_of_probes</B></TD><TD><A HREF="#CODE12">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD6">prev</A></TD><TD><A HREF="#POD8">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : 	none<BR>  Example    : 	my $number_of_probes=$cdf-&gt;original_number_of_probes()<BR>  Description: 	Get the number of probesets on the array, as listed<BR>originally in the file. A better way is to do my<BR>$q=scalar(@{$cdf-&gt;probesets()}); if you want a current count.<BR>  Returntype : integer<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_original_version"></A><A NAME="POD8"></A><B>original_version</B></TD><TD><A HREF="#CODE13">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD7">prev</A></TD><TD><A HREF="#POD9">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : 	none<BR>  Example    : 	my $version=$cdf-&gt;original_version()<BR>  Description: 	Returns the version of the CDF file parsed. Encoded in file.<BR>  Returntype : string<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_parse_from_file"></A><A NAME="POD9"></A><B>parse_from_file</B></TD><TD><A HREF="#CODE14">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD8">prev</A></TD><TD><A HREF="#POD10">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	string<BR>  Example    : 	$cdf-&gt;parse_from_file($cdf_filename);<BR>  Description:	Parse a CDF file from a file<BR>  Returntype :	none<BR>  Exceptions : 	dies if can't open file<BR>  Caller     : 	general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_parse_from_filehandle"></A><A NAME="POD10"></A><B>parse_from_filehandle</B></TD><TD><A HREF="#CODE15">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD9">prev</A></TD><TD><A HREF="#POD11">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	reference to filehandle<BR>  Example    : 	$cdf-&gt;parse_from_filehandle(\*STDIN);<BR>  Description:	Parse a CDF file from a filehandle<BR>  Returntype :	none<BR>  Exceptions : 	none<BR>  Caller     : 	general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_parse_from_string"></A><A NAME="POD11"></A><B>parse_from_string</B></TD><TD><A HREF="#CODE16">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD10">prev</A></TD><TD><A HREF="#POD12">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	string<BR>  Example    : 	$cdf-&gt;parse_from_string($cdf_file_in_a_string);<BR>  Description:	Parse a CDF file from a buffer in memory<BR>  Returntype :	none<BR>  Exceptions : 	none<BR>  Caller     : 	general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_probesets"></A><A NAME="POD12"></A><B>probesets</B></TD><TD><A HREF="#CODE17">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD11">prev</A></TD><TD><A HREF="#POD13">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	arrayref $probesets <BR>  Example    : 	my @probesets=@{$cdf-&gt;probesets()}<BR>  Description: 	Get the probesets on the array<BR>  Returntype : an reference to an array of<BR>Bio::Affymetrix::CDF::Probeset objects (q.v.)<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD WIDTH="200"><A NAME="_pod_rows"></A><A NAME="POD13"></A><B>rows</B></TD><TD><A HREF="#CODE18">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD12">prev</A></TD><TD><A HREF="#POD14">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	integer $rows (optional)<BR>  Example    : 	my $name=$cdf-&gt;rows()<BR>  Description: 	Get/set the number of rows in this chip<BR>  Returntype : integer<BR>  Exceptions : none<BR>  Caller     : general<BR></pre>
<A NAME="MethCode"></A>
<HR><H2>Methods code</H2>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE1"></A><B>_next_line</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30">prev</TD><TD WIDTH="30"><A HREF="#CODE2">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff00ff"><b>_next_line</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$q</font>;
    
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$fh</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FH"</font><font color="#0000ff"><b>}</b></font>;

    <font color="#0000ff"><b>do</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#1f32ff">$q</font>=&lt;<font color="#1f32ff">$fh</font>&gt;;
	<font color="#4169e1"><b>chomp</b></font> <font color="#1f32ff">$q</font>;
    <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>while</b></font> <font color="#0000ff"><b>(</b></font>!<font color="#4169e1"><b>eof</b></font> <font color="#1f32ff">$fh</font>&amp;&amp;<font color="#1f32ff">$q</font>=~<font color="#006400"><b>/^\s*$/</b></font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font>!<font color="#4169e1"><b>eof</b></font> <font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$q</font>;
    <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>else</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>return</b></font> <font color="#4169e1"><b>undef</b></font>;
    <font color="#0000ff"><b>}</b></font></pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE2"></A><B>_parse_chip_section</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE1">prev</A></TD><TD WIDTH="30"><A HREF="#CODE3">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff00ff"><b>_parse_chip_section</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>;
    <font color="#0000ff"><b>while</b></font> <font color="#0000ff"><b>(</b></font>!<font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_next_line</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>)</b></font>=~<font color="#006400"><b>/^\[.*\]$/</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>my</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$name</font>,<font color="#1f32ff">$value</font><font color="#0000ff"><b>)</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_split_line</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>)</b></font>;
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#4169e1"><b>uc</b></font> <font color="#1f32ff">$name</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$value</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$i</font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE3"></A><B>_parse_qc_section</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE2">prev</A></TD><TD WIDTH="30"><A HREF="#CODE4">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff00ff"><b>_parse_qc_section</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;

    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>;

    <font color="#0000ff"><b>while</b></font> <font color="#0000ff"><b>(</b></font>!<font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_next_line</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>)</b></font>=~<font color="#006400"><b>/^\[.*\]$/</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#ff0000">## This version doesn't do anything with QC sections. They bore us.</font><BR>	;
    <font color="#0000ff"><b>}</b></font>
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$i</font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE4"></A><B>_parse_unit_section</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE3">prev</A></TD><TD WIDTH="30"><A HREF="#CODE5">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff00ff"><b>_parse_unit_section</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=<font color="#0000ff"><b>new</b></font> <A HREF="CDF/Probeset.html"><font color="#8000ff"><b>Bio::Affymetrix::CDF::Probeset</b></font></A>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$ret</font>=<font color="#1f32ff">$i</font>-&gt;<font color="#ff8204">_parse_from_filehandle</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FH"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font>;
    
    <font color="#1f32ff">$i</font>-&gt;<font color="#ff8204">CDF</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font><font color="#0000ff"><b>)</b></font>;
    
    <font color="#4169e1"><b>push</b></font> @<font color="#0000ff"><b>{</b></font><font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"PROBESETS"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$i</font>;
    
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$ret</font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE5"></A><B>_split_line</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE4">prev</A></TD><TD WIDTH="30"><A HREF="#CODE6">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff00ff"><b>_split_line</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$line</font>=<font color="#4169e1"><b>shift</b></font>;
    
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@q</font>=<font color="#4169e1"><b>split</b></font> <font color="#006400"><b>/=/</b></font>,<font color="#1f32ff">$line</font>,2;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#4169e1"><b>scalar</b></font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">@q</font><font color="#0000ff"><b>)</b></font>!=2<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>die</b></font> <font color="#007400">"Can't parse line "</font>.<font color="#1f32ff">$line</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">@q</font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE6"></A><B>cols</B></TD><TD><A HREF="#POD1">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE5">prev</A></TD><TD WIDTH="30"><A HREF="#CODE7">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>cols</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$q</font>=<font color="#4169e1"><b>shift</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"COLS"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$q</font>;
    <font color="#0000ff"><b>}</b></font>
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"COLS"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE7"></A><B>name</B></TD><TD><A HREF="#POD2">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE6">prev</A></TD><TD WIDTH="30"><A HREF="#CODE8">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>name</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$q</font>=<font color="#4169e1"><b>shift</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"NAME"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$q</font>;
    <font color="#0000ff"><b>}</b></font>
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"NAME"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE8"></A><B>new</B></TD><TD><A HREF="#POD3">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE7">prev</A></TD><TD WIDTH="30"><A HREF="#CODE9">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>new</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$class</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$q</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#0000ff"><b>{</b></font><font color="#0000ff"><b>}</b></font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"PROBESETS"</font><font color="#0000ff"><b>}</b></font>=<font color="#0000ff"><b>[</b></font><font color="#0000ff"><b>]</b></font>;

    <font color="#4169e1"><b>bless</b></font> <font color="#1f32ff">$self</font>,<font color="#1f32ff">$class</font>;
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE9"></A><B>original_format</B></TD><TD><A HREF="#POD4">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE8">prev</A></TD><TD WIDTH="30"><A HREF="#CODE10">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>original_format</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FORMAT"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE10"></A><B>original_max_unit</B></TD><TD><A HREF="#POD5">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE9">prev</A></TD><TD WIDTH="30"><A HREF="#CODE11">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>original_max_unit</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"MAXUNIT"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE11"></A><B>original_num_qc_units</B></TD><TD><A HREF="#POD6">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE10">prev</A></TD><TD WIDTH="30"><A HREF="#CODE12">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>original_num_qc_units</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"NUMQCUNITS"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE12"></A><B>original_number_of_probes</B></TD><TD><A HREF="#POD7">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE11">prev</A></TD><TD WIDTH="30"><A HREF="#CODE13">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>original_number_of_probes</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"NUMBEROFUNITS"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE13"></A><B>original_version</B></TD><TD><A HREF="#POD8">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE12">prev</A></TD><TD WIDTH="30"><A HREF="#CODE14">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>original_version</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"VERSION"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE14"></A><B>parse_from_file</B></TD><TD><A HREF="#POD9">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE13">prev</A></TD><TD WIDTH="30"><A HREF="#CODE15">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>parse_from_file</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$filename</font>=<font color="#4169e1"><b>shift</b></font>;

    <font color="#4169e1"><b>open</b></font> CDF,<font color="#007400">"&lt;"</font>.<font color="#1f32ff">$filename</font> or <font color="#4169e1"><b>die</b></font> <font color="#007400">"Cannot open file "</font>.<font color="#1f32ff">$filename</font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">parse_from_filehandle</font><font color="#0000ff"><b>(</b></font>\*CDF<font color="#0000ff"><b>)</b></font>;

    <font color="#4169e1"><b>close</b></font> CDF;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE15"></A><B>parse_from_filehandle</B></TD><TD><A HREF="#POD10">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE14">prev</A></TD><TD WIDTH="30"><A HREF="#CODE16">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>parse_from_filehandle</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FH"</font><font color="#0000ff"><b>}</b></font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#4169e1"><b>binmode</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FH"</font><font color="#0000ff"><b>}</b></font>,<font color="#007400">":crlf"</font>;
    <font color="#ff0000">## Obtain file version, and do some rudimentary checking of information</font><BR>    <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_next_line</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;

	<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font> <font color="#0000ff"><b>ne</b></font> <font color="#007400">"[CDF]"</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#4169e1"><b>die</b></font> <font color="#007400">"File does not look like a CDF file to me. Note- Bio::Affymetrix::CDF cannot understand all types CDF files"</font>;
	<font color="#0000ff"><b>}</b></font>

	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FORMAT"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"MAS5"</font>;

	<font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_next_line</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;

	<font color="#0000ff"><b>my</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$name</font>,<font color="#1f32ff">$value</font><font color="#0000ff"><b>)</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_split_line</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>)</b></font>;

	<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$name</font> <font color="#0000ff"><b>ne</b></font> <font color="#007400">"Version"</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#4169e1"><b>die</b></font> <font color="#007400">"File does not look like a CDF file to me"</font>;
	<font color="#0000ff"><b>}</b></font>

	<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$value</font> <font color="#0000ff"><b>ne</b></font> <font color="#007400">"GC3.0"</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#4169e1"><b>die</b></font> <font color="#007400">"Can't understand any other type of CDF file other than GC3.0"</font>;
	<font color="#0000ff"><b>}</b></font>
	
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"VERSION"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$value</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#ff0000">## Parse the rest of the file</font><BR>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_next_line</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>while</b></font> <font color="#0000ff"><b>(</b></font>!<font color="#4169e1"><b>eof</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"FH"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font> <font color="#0000ff"><b>eq</b></font> <font color="#007400">"[Chip]"</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_parse_chip_section</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font>=~<font color="#006400"><b>/\[QC\d+\]/</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_parse_qc_section</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$i</font>=~<font color="#006400"><b>/\[Unit\d+\]/</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#1f32ff">$i</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_parse_unit_section</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>}</b></font>
	
    <font color="#0000ff"><b>}</b></font></pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE16"></A><B>parse_from_string</B></TD><TD><A HREF="#POD11">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE15">prev</A></TD><TD WIDTH="30"><A HREF="#CODE17">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>parse_from_string</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$string</font>=<font color="#4169e1"><b>shift</b></font>;


    <font color="#4169e1"><b>open</b></font> CDF,<font color="#007400">"&lt;"</font>,\<font color="#1f32ff">$string</font> or <font color="#4169e1"><b>die</b></font> <font color="#007400">"Cannot open string stream"</font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">parse_from_filehandle</font><font color="#0000ff"><b>(</b></font>\*CDF<font color="#0000ff"><b>)</b></font>;

    <font color="#4169e1"><b>close</b></font> CDF;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE17"></A><B>probesets</B></TD><TD><A HREF="#POD12">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE16">prev</A></TD><TD WIDTH="30"><A HREF="#CODE18">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>probesets</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$q</font>=<font color="#4169e1"><b>shift</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"PROBESETS"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$q</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"PROBESETS"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE18"></A><B>rows</B></TD><TD><A HREF="#POD13">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE17">prev</A></TD><TD WIDTH="30">next</TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>rows</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$self</font>=<font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$q</font>=<font color="#4169e1"><b>shift</b></font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"ROWS"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$q</font>;
    <font color="#0000ff"><b>}</b></font>
    <font color="#0000ff"><b>return</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"ROWS"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<A NAME="General"></A>
<HR><H2>General documentation</H2>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#4492df"><TD><A NAME="_pod_NOTES"><B>NOTES</A></B></TD>
<TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre></pre>
</TD></TR>
<TR BGCOLOR="#4492df"><TD><A NAME="_pod_REFERENCE"><B>REFERENCE</A></B></TD>
<TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre>Modules were written with the official Affymetrix documentation, which<BR>can be located at <a href="http://www.affymetrix.com/support/developer/AffxFileFormats.ZIP" target="urlWin">http://www.affymetrix.com/support/developer/AffxFileFormats.ZIP</a><BR></pre>
</TD></TR>
<TR BGCOLOR="#4492df"><TD><A NAME="_pod_COMPATIBILITY"><B>COMPATIBILITY</A></B></TD>
<TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre>This module can parse the CDF files produced by the Affymetrix software<BR>MAS 5 only. This is different from the Bio::Affymetrix::CHP<BR>module. These files have QC information in them, which is thrown away.<BR></pre>
</TD></TR>
<TR BGCOLOR="#4492df"><TD><A NAME="_pod_TODO"><B>TODO</A></B></TD>
<TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre>Writing CDF files as well as reading them. Parsing GCOS v1.2 CDF<BR>files. Maybe parse QC information?<BR></pre>
</TD></TR>
<TR BGCOLOR="#4492df"><TD><A NAME="_pod_COPYRIGHT"><B>COPYRIGHT</A></B></TD>
<TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre>This module is free software. You can copy or redistribute it under the same terms as Perl itself.<BR></pre>
</TD></TR>
<TR BGCOLOR="#4492df"><TD><A NAME="_pod_AUTHORS"><B>AUTHORS</A></B></TD>
<TD><A HREF="#TOP">top</A></TD></TR><TR><TD COLSPAN="2"><pre>    <BR>Nick James (nick at arabidopsis.info)<BR><BR>David J Craigon (david at arabidopsis.info)<BR><BR>Nottingham Arabidopsis Stock Centre, University of Nottingham.<BR></pre>
</TD></TR>
</TABLE>
</body>
</html>