The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
<head>
<!-- Generated by perlmod2www.pl -->
<title>
CHP documentation.
</title>
</head>
<body bgcolor="white">
<HR><H4>Bio::Affymetrix</H4>
<H3>CHP</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::CHP</B>- parse Affymetrix CHP 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">strict</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::CHP;<BR><BR>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># Make a new CHP object, using the CDF file<BR><BR>my $chp=new CHP($cdf);<BR><BR># Parse CHP file<BR><BR>$chp-&gt;parse_from_file(&quot;foo.chp&quot;);<BR><BR># Find some fun facts about this chip<BR><BR>print $chp-&gt;algorithm_name().&quot;\n&quot;;<BR><BR>print $chp-&gt;version().&quot;\n&quot;;<BR><BR># Print out all of the signal values for this chip<BR><BR>foreach my $i (keys %{$chp-&gt;probe_set_results()}) {<BR>    print $i.&quot;,&quot;.$CHP-&gt;probe_set_results()-&gt;{$i}-&gt;{&quot;Signal&quot;}.&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 CHP files. <BR><BR>This module requires a Bio::Affymetrix::CDF object before it can do<BR>anything. This must be supplied to the constructor. See the perldoc<BR>for that to see how to use that module. The module can parse various<BR>types of CHP file transparently. You can find out what type you have<BR>by using the version() method.<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.<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. Data is retrieved as a giant hash from<BR>probe_set_results. Subroutines marked &quot;original_&quot; give values as they<BR>are claimed in the original file, not as they are now (for instance if<BR>you modify the value)<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>CDF</B></TD><TD><A HREF="#POD1">Description</A></TD><TD><A HREF="#CODE1">Code</A></TD></TR>
<TR><TD><B>CEL_file_name</B></TD><TD><A HREF="#POD2">Description</A></TD><TD><A HREF="#CODE2">Code</A></TD></TR>
<TR><TD><B>_parse_mas5</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE3">Code</A></TD></TR>
<TR><TD><B>_parse_xda</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE4">Code</A></TD></TR>
<TR><TD><B>algorithm_name</B></TD><TD><A HREF="#POD3">Description</A></TD><TD><A HREF="#CODE5">Code</A></TD></TR>
<TR><TD><B>algorithm_params</B></TD><TD><A HREF="#POD4">Description</A></TD><TD><A HREF="#CODE6">Code</A></TD></TR>
<TR><TD><B>algorithm_version</B></TD><TD><A HREF="#POD5">Description</A></TD><TD><A HREF="#CODE7">Code</A></TD></TR>
<TR><TD><B>background_zones</B></TD><TD><A HREF="#POD6">Description</A></TD><TD><A HREF="#CODE8">Code</A></TD></TR>
<TR><TD><B>cols</B></TD><TD><A HREF="#POD7">Description</A></TD><TD><A HREF="#CODE9">Code</A></TD></TR>
<TR><TD><B>new</B></TD><TD><A HREF="#POD8">Description</A></TD><TD><A HREF="#CODE10">Code</A></TD></TR>
<TR><TD><B>original_com_progid</B></TD><TD><A HREF="#POD9">Description</A></TD><TD><A HREF="#CODE11">Code</A></TD></TR>
<TR><TD><B>original_format</B></TD><TD><A HREF="#POD10">Description</A></TD><TD><A HREF="#CODE12">Code</A></TD></TR>
<TR><TD><B>original_number_of_probes</B></TD><TD><A HREF="#POD11">Description</A></TD><TD><A HREF="#CODE13">Code</A></TD></TR>
<TR><TD><B>original_number_qc_units</B></TD><TD><A HREF="#POD12">Description</A></TD><TD><A HREF="#CODE14">Code</A></TD></TR>
<TR><TD><B>original_version</B></TD><TD><A HREF="#POD13">Description</A></TD><TD><A HREF="#CODE15">Code</A></TD></TR>
<TR><TD><B>parse_from_file</B></TD><TD><A HREF="#POD14">Description</A></TD><TD><A HREF="#CODE16">Code</A></TD></TR>
<TR><TD><B>parse_from_filehandle</B></TD><TD><A HREF="#POD15">Description</A></TD><TD><A HREF="#CODE17">Code</A></TD></TR>
<TR><TD><B>parse_from_string</B></TD><TD><A HREF="#POD16">Description</A></TD><TD><A HREF="#CODE18">Code</A></TD></TR>
<TR><TD><B>probe_array_type</B></TD><TD><A HREF="#POD17">Description</A></TD><TD><A HREF="#CODE19">Code</A></TD></TR>
<TR><TD><B>probe_set_results</B></TD><TD><A HREF="#POD18">Description</A></TD><TD><A HREF="#CODE20">Code</A></TD></TR>
<TR><TD><B>rows</B></TD><TD><A HREF="#POD19">Description</A></TD><TD><A HREF="#CODE21">Code</A></TD></TR>
<TR><TD><B>smooth_factor</B></TD><TD><A HREF="#POD20">Description</A></TD><TD><A HREF="#CODE22">Code</A></TD></TR>
<TR><TD><B>summary_statistics</B></TD><TD><A HREF="#POD21">Description</A></TD><TD><A HREF="#CODE23">Code</A></TD></TR>
<TR><TD><B>unpack_length_string</B></TD><TD><FONT COLOR="RED"><B>No description</B></FONT></TD><TD><A HREF="#CODE24">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_CDF"></A><A NAME="POD1"></A><B>CDF</B></TD><TD><A HREF="#CODE1">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]    : Bio::Affymetrix::CDF $db_file<BR>  Example    : none<BR>  Description: get/set for CDF file associated with this CHP file. The db is the one that <BR>               belongs to the external_name.  <BR>  Returntype : Bio::Affymetrix::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_CEL_file_name"></A><A NAME="POD2"></A><B>CEL_file_name</B></TD><TD><A HREF="#CODE2">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 $cel_file_name (optional)<BR>  Example    : 	my $cel_file_name=$chp-&gt;CEL_file_name();<BR>  Description:	Get/set the CEL file this CHP file was made from<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_algorithm_name"></A><A NAME="POD3"></A><B>algorithm_name</B></TD><TD><A HREF="#CODE5">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 [1]    : 	string $algorithm_name (optional)<BR>  Example    : 	my $algorithm_name=$chp-&gt;algorithm_name();<BR>  Description:	Get/set the algorithm name that turned the CEL file<BR>into this CHP 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_algorithm_params"></A><A NAME="POD4"></A><B>algorithm_params</B></TD><TD><A HREF="#CODE6">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 [1]    : 	hashref $algorithm_params (optional)<BR>  Example    : 	my %algorithm_params=%{$chp-&gt;algorithm_params()};<BR><BR># Print scale factor<BR><BR>print $algorithm_params(&quot;SF&quot;);<BR><BR>  Description:	Get/set the algorithm parameters for turning the CEL<BR>file into this CHP file. Returns a reference to a hash, keyed on<BR>parameter name.<BR><BR>Parameters include:<BR>SF (scale factor)<BR>Alpha1<BR>Alpha2<BR>Tau<BR>NF (normalisation factor)<BR><BR>  Returntype :	hashref<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_algorithm_version"></A><A NAME="POD5"></A><B>algorithm_version</B></TD><TD><A HREF="#CODE7">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 [1]    : 	string $algorithm_version (optional)<BR>  Example    : 	my $algorithm_version=$chp-&gt;algorithm_version();<BR>  Description:	Get/set the algorithm version that turned the CEL file<BR>into this CHP 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_background_zones"></A><A NAME="POD6"></A><B>background_zones</B></TD><TD><A HREF="#CODE8">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 [1]    : 	arrayref of arrayrefs $background_zones (optional)<BR>  Example    : 	my @background_zones=@{$chp-&gt;background_zones()};<BR><BR># Print &quot;X&quot;, &quot;Y&quot;, &quot;Background Value&quot; for background zone 0<BR>print $background_zones[0]-&gt;[0],$background_zones[0]-&gt;[1],$background_zones[0]-&gt;[2];<BR><BR>  Description:	Get/set an array of background zones. Again, your guess is as good as<BR>mine as to what this actually is, although it is used in calculating<BR>the background. Not available in MAS5 files.<BR><BR>Returns an arrayref to an arrayref. Each zone has an array three<BR>values long, which are X,Y and background value respectively.<BR>  Returntype :	arrayref of arrayrefs<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_cols"></A><A NAME="POD7"></A><B>cols</B></TD><TD><A HREF="#CODE9">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 $x=$chp-&gt;cols()<BR>  Description:	Numbers of columns in the array <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_new"></A><A NAME="POD8"></A><B>new</B></TD><TD><A HREF="#CODE10">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 [1]    : Bio::Affymetrix::CDF $db_file<BR>  Example    : my $chp=new <B>Bio::Affymetrix::CHP</B>($cdf);<BR>  Description: constructor for CHP object<BR>  Returntype : new Bio::Affmetrix::CHP 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_com_progid"></A><A NAME="POD9"></A><B>original_com_progid</B></TD><TD><A HREF="#CODE11">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 [0]    : 	none<BR>  Example    : 	my $com_id=$chp-&gt;original_com_progid()<BR>  Description:	Gets the progid of the orignal COM object that made<BR>				this CHP 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_original_format"></A><A NAME="POD10"></A><B>original_format</B></TD><TD><A HREF="#CODE12">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 [0]    : 	none<BR>  Example    : 	my $format=$chp-&gt;original_format()<BR>  Description: 	Returns the format of the CHP file parsed<BR>  			 	(currently) either &quot;XDA&quot; (which is a GCOS v1.2 format,<BR>				also known as version 4) or &quot;MAS5&quot; (which is produced<BR>				either by MAS 5 or GCOS v1.0, also known as version 3)<BR>  Returntype : string (&quot;XDA&quot; or &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_number_of_probes"></A><A NAME="POD11"></A><B>original_number_of_probes</B></TD><TD><A HREF="#CODE13">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 [0]    : 	none<BR>  Example    : 	my $original_probes=$chp-&gt;original_number_of_probes()<BR>  Description:	Gets the original number of probes reported in the<BR>				array.<BR><BR>				The CHP files have the number of probes stored in<BR>				them, and this function lets you read this number as<BR>				it was stored in the file originally.<BR><BR>				A better way of finding out the current number of<BR>				probes is to count the number in the probe_set_results<BR>				hash, like so: scalar(keys %{$chp-&gt;probe_set_results()});<BR>		<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_qc_units"></A><A NAME="POD12"></A><B>original_number_qc_units</B></TD><TD><A HREF="#CODE14">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 [0]    : 	none<BR>  Example    : 	my $original_qc=$chp-&gt;original_number_qc_units()<BR>  Description:	Gets the original number of QC units in the file.<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="POD13"></A><B>original_version</B></TD><TD><A HREF="#CODE15">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 [0]    : 	none<BR>  Example    : 	my $version=$chp-&gt;original_version()<BR>  Description: 	Returns the version of the CHP file parsed<BR>  		Best used in conjunction with original_format,<BR>		above. For XDA files, the version is always<BR>		(currently) 1. For MAS5 files the version is either 12<BR>		for a file produced by MAS5, or 13 for a GCOS v1.0<BR>		file. Code is written for parsing version 13 files,<BR>		but we've no idea if it works.<BR><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="POD14"></A><B>parse_from_file</B></TD><TD><A HREF="#CODE16">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD13">prev</A></TD><TD><A HREF="#POD15">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	string<BR>  Example    : 	$chp-&gt;parse_from_file($chp_filename);<BR>  Description:	Parse a CHP 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="POD15"></A><B>parse_from_filehandle</B></TD><TD><A HREF="#CODE17">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD14">prev</A></TD><TD><A HREF="#POD16">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	reference to filehandle<BR>  Example    : 	$chp-&gt;parse_from_filehandle(\*STDIN);<BR>  Description:	Parse a CHP 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="POD16"></A><B>parse_from_string</B></TD><TD><A HREF="#CODE18">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD15">prev</A></TD><TD><A HREF="#POD17">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	string<BR>  Example    : 	$chp-&gt;parse_from_string($chp_file_in_a_string);<BR>  Description:	Parse a CHP 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_probe_array_type"></A><A NAME="POD17"></A><B>probe_array_type</B></TD><TD><A HREF="#CODE19">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD16">prev</A></TD><TD><A HREF="#POD18">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	string $array_type (optional)<BR>  Example    : 	my $probe_array_type=$chp-&gt;probe_array_type();<BR>  Description:	Get/set the Affymetrix chip type used in the<BR>production of this CHP file. String is same format as CDF file name,<BR>for example 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_probe_set_results"></A><A NAME="POD18"></A><B>probe_set_results</B></TD><TD><A HREF="#CODE20">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD17">prev</A></TD><TD><A HREF="#POD19">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	hashref of hashrefs $probe_set_results (optional)<BR>  Example    : 	my %results=%{$chp-&gt;probe_set_results()};<BR>e<BR># Print &quot;Signal&quot;, &quot;Detection Call&quot;, &quot;StatPairsUsed&quot; for my favourite probe<BR><BR>print ($results{&quot;246310_at&quot;}-&gt;{&quot;Signal&quot;}.&quot;\n&quot;.$results{&quot;246310_at&quot;}-&gt;{&quot;DetectionCall&quot;}.&quot;\n&quot;.$results{&quot;246310_at&quot;}-&gt;{&quot;StatPairsUsed&quot;}.&quot;\n&quot;);<BR><BR>  Description:	Gain access to the actual data. Returns a reference to<BR>hash, keyed on probe name. Each value contains another reference<BR>to a hash with the following keys:<BR><BR>Signal<BR>DetectionCall (detection call- one of P M A N)<BR>DetectionPValue<BR>StatPairs<BR>StatPairsUsed<BR>Probeset (a Bio::CDF::ProbeSet object, q.v.)<BR><BR>and optionally:<BR>Change<BR>ChangePValue<BR>SignalLogRatio<BR>SignalLogRatioHigh<BR>SignalLogRatioLow<BR>CommonPairs<BR><BR>when it is a CHP files with a comparison in it.<BR><BR>  Returntype :	hashref of hashrefs<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="POD19"></A><B>rows</B></TD><TD><A HREF="#CODE21">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD18">prev</A></TD><TD><A HREF="#POD20">next</A></TD></TR></TABLE>
<pre>  Arg [0]    : 	none<BR>  Example    : 	my $y=$chp-&gt;rows()<BR>  Description:	Get/set numbers of rows in the array <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_smooth_factor"></A><A NAME="POD20"></A><B>smooth_factor</B></TD><TD><A HREF="#CODE22">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD19">prev</A></TD><TD><A HREF="#POD21">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	float $smooth_factor (optional)<BR>  Example    : 	my $smooth_factor=$chp-&gt;smooth_factor();<BR>  Description:	Get/set the smooth factor. Your guess is as good as<BR>mine as to what this actually is, although it is used in calculating<BR>the background. Not available in MAS5 files.<BR>  Returntype :	float<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_summary_statistics"></A><A NAME="POD21"></A><B>summary_statistics</B></TD><TD><A HREF="#CODE23">code</A></TD><TD><A HREF="#TOP">top</A></TD><TD><A HREF="#POD20">prev</A></TD><TD><A HREF="#POD22">next</A></TD></TR></TABLE>
<pre>  Arg [1]    : 	hashref $summary_statistics (optional)<BR>  Example    : 	my %summary_statistics=%{$chp-&gt;summary_statistics()};<BR><BR># Print RawQ<BR><BR>print $summary_statistics(&quot;RawQ&quot;);<BR><BR>  Description:	Get/set the summary statistics for turning the CEL<BR>file into this CHP file. Returns a reference to a hash, keyed on<BR>parameter name.<BR><BR>Parameters include:<BR>RawQ<BR>Noise<BR>Background<BR><BR>  Returntype :	hashref<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>CDF</B></TD><TD><A HREF="#POD1">description</A></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="#ff0000"><b>CDF</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">"cdf"</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">"cdf"</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>CEL_file_name</B></TD><TD><A HREF="#POD2">description</A></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="#ff0000"><b>CEL_file_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">"cel_file_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">"cel_file_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="CODE3"></A><B>_parse_mas5</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_mas5</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>,<font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font> = <font color="#1f32ff">@_</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="#0000ff"><b>my</b></font> <font color="#1f32ff">$buffer</font>; 
    
    <font color="#ff0000">## Get version from file</font><BR>    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<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="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>if</b></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>!=12&amp;&amp;<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"version"</font><font color="#0000ff"><b>}</b></font>!=13<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>warn</b></font> <font color="#007400">"This CHP file has a version number unrecognised by the software parsing them. Results may be suspect."</font>; <font color="#ff0000">## die here, perhaps?</font><BR>    <font color="#0000ff"><b>}</b></font>

    <font color="#0000ff"><b>if</b></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>==13<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>warn</b></font> <font color="#007400">"The authors of this module have never seen a genuine GCOS v1.0 CHP file. This program can parse them, but we're only relying on the specification supplied by Affymetrix- we've not tested this at all. Suspect results therefore are highly likely."</font>;
    <font color="#0000ff"><b>}</b></font>
    <font color="#ff0000">## Trivia section</font><BR>
    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"algorithm_name"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"algorithm_version"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    
    <font color="#ff0000">## Parse algorithm parameters to maintain compatability with XDA format</font><BR>
    <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%algorithm_params</font>;
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$parse_me</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>foreach</b></font> <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font> <font color="#0000ff"><b>(</b></font><font color="#4169e1"><b>split</b></font> <font color="#006400"><b>/ /</b></font>,<font color="#1f32ff">$parse_me</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="#4169e1"><b>split</b></font> <font color="#006400"><b>/=/</b></font>,<font color="#1f32ff">$i</font>;
	    <font color="#1f32ff">$algorithm_params</font><font color="#0000ff"><b>{</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="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"algorithm_params"</font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%algorithm_params</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#ff0000">## Summary statistics</font><BR>
    <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%summary_stats</font>;
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$parse_me</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>foreach</b></font> <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font> <font color="#0000ff"><b>(</b></font><font color="#4169e1"><b>split</b></font> <font color="#006400"><b>/ /</b></font>,<font color="#1f32ff">$parse_me</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="#4169e1"><b>split</b></font> <font color="#006400"><b>/=/</b></font>,<font color="#1f32ff">$i</font>;
	    <font color="#1f32ff">$summary_stats</font><font color="#0000ff"><b>{</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="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"summary_statistics"</font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%summary_stats</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 20<font color="#0000ff"><b>)</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$max_probeset_num</font>;
    <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_rows"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_cols"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$max_probeset_num</font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_qc_units"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font>= <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V5"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;
    
    <font color="#ff0000">## THROW AWAY PROBESET NUMBER FOR EACH PROBESET</font><BR>    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4*<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font>;

    <font color="#ff0000">## THROW AWAY NUMBER OF PROBE PAIRS FOR EACH PROBESET</font><BR>    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4*<font color="#1f32ff">$max_probeset_num</font><font color="#0000ff"><b>)</b></font>;

    <font color="#ff0000">## THROW AWAY PROBESETTYPE FOR EACH PROBESET</font><BR>    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4*<font color="#1f32ff">$max_probeset_num</font><font color="#0000ff"><b>)</b></font>; <font color="#ff0000">## Should test</font><BR>
    <font color="#ff0000">## THROW AWAY PROBESET NUMBER FOR EACH PROBESET</font><BR>    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4*<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font>;

    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 512<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">"probe_array_type"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"cel_file_name"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font>=<font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"Z256Z256"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"probe_array_type"</font><font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>ne</b></font> <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"cdf"</font><font color="#0000ff"><b>}</b></font>-&gt;<font color="#ff8204">name</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>
	<font color="#4169e1"><b>warn</b></font> <font color="#007400">"The CDF object you have supplied does not have the same name as the CDF file used to make this CHP file. Results may be dubious"</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"com_progid"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    <font color="#ff0000">## Actual data. This is the bit that would need to be added to, if we did SNP etc. arrays</font><BR>    <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%data</font>;
	
	<font color="#0000ff"><b>if</b></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>==12<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%results</font>;
	    
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$probesetlist</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"cdf"</font><font color="#0000ff"><b>}</b></font>-&gt;<font color="#ff8204">probesets</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;
	    
	    <font color="#0000ff"><b>for</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=0;<font color="#1f32ff">$i</font>&lt;<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font>;<font color="#1f32ff">$i</font>++<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>

		<font color="#ff0000">## Non-comparison analysis</font><BR>
		<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 44<font color="#0000ff"><b>)</b></font>;
		
		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@results</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V7f3V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;

		<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>10<font color="#0000ff"><b>]</b></font>==0<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"P"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>10<font color="#0000ff"><b>]</b></font>==1<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"M"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>10<font color="#0000ff"><b>]</b></font>==2<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"A"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>10<font color="#0000ff"><b>]</b></font>==3<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"N"</font>;
		<font color="#0000ff"><b>}</b></font>

		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionPValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>7<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Signal"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>9<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairsUsed"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>1<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Probeset"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>;

		<font color="#ff0000">## Blimey-o-reilly! There's an entire CEL file in here! Let's ditch that.</font><BR>		
		<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairs"</font><font color="#0000ff"><b>}</b></font>*52<font color="#0000ff"><b>)</b></font>; <font color="#ff0000">##52 bytes of junk per probeset?</font><BR>
		<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
		
		<font color="#ff0000">## Comparison analysis</font><BR>
		<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>==1<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">"comparison"</font><font color="#0000ff"><b>}</b></font>=1;
		    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 58<font color="#0000ff"><b>)</b></font>;
		    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@results</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V5c2V9"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

		    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Change"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>4<font color="#0000ff"><b>]</b></font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"ChangePValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>15<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatio"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>12<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatioLow"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>14<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatioHigh"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>9<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"CommonPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"BaselineAbsent"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>5<font color="#0000ff"><b>]</b></font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Probeset"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>;
		<font color="#0000ff"><b>}</b></font>
		
		<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font> or <font color="#4169e1"><b>die</b></font> <font color="#007400">"Suspect CDF file! We have more data in the CHP file than expected. Are you using the right CDF file?"</font>;
		
		<font color="#1f32ff">$data</font><font color="#0000ff"><b>{</b></font><font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>-&gt;<font color="#ff8204">name</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%h</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">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"version"</font><font color="#0000ff"><b>}</b></font>==13<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%results</font>;
	    
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$probesetlist</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"cdf"</font><font color="#0000ff"><b>}</b></font>-&gt;<font color="#ff8204">probesets</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;
	    
	    <font color="#0000ff"><b>for</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=0;<font color="#1f32ff">$i</font>&lt;<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font>;<font color="#1f32ff">$i</font>++<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>

		<font color="#ff0000">## Non-comparison analysis</font><BR>
		<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 24<font color="#0000ff"><b>)</b></font>;
		
		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@results</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V3f2V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;
		<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>5<font color="#0000ff"><b>]</b></font>==0<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"P"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>5<font color="#0000ff"><b>]</b></font>==1<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"M"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>5<font color="#0000ff"><b>]</b></font>==2<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"A"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>5<font color="#0000ff"><b>]</b></font>==3<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"N"</font>;
		<font color="#0000ff"><b>}</b></font>


		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionPValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>3<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Signal"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>4<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairsUsed"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>1<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Probeset"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>;

		<font color="#ff0000">## Blimey-o-reilly! There's still-enough-of-a-CEL-file in here to be annoying! Nurse! The screens!</font><BR>		
		<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairs"</font><font color="#0000ff"><b>}</b></font>*20<font color="#0000ff"><b>)</b></font>; <font color="#ff0000">##20 bytes of junk per probeset?</font><BR>
		<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
		
		<font color="#ff0000">## Comparison analysis</font><BR>
		<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>==1<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 27<font color="#0000ff"><b>)</b></font>; <font color="#ff0000">##????????</font><BR>		    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@results</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V2cV4"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

		    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Change"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>1<font color="#0000ff"><b>]</b></font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"ChangePValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>6<font color="#0000ff"><b>]</b></font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatio"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>3<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatioLow"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>4<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatioHigh"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>5<font color="#0000ff"><b>]</b></font>/1000;<BR>		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"CommonPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>;
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"BaselineAbsent"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>2<font color="#0000ff"><b>]</b></font>;

		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Probeset"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>;
		<font color="#0000ff"><b>}</b></font>
		
		<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font> or <font color="#4169e1"><b>die</b></font> <font color="#007400">"Suspect CDF file! We have more data in the CHP file than expected. Are you using the right CDF file?"</font>;
		
		<font color="#1f32ff">$data</font><font color="#0000ff"><b>{</b></font><font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>-&gt;<font color="#ff8204">name</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%h</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">"probe_set_results"</font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%data</font>;
    <font color="#0000ff"><b>}</b></font></pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE4"></A><B>_parse_xda</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_xda</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>,<font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font> = <font color="#1f32ff">@_</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">"XDA"</font>;
    
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$buffer</font>; 

    <font color="#ff0000">## First some trivia</font><BR>
    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<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="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;
    
    <font color="#0000ff"><b>if</b></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>!=1<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>warn</b></font> <font color="#007400">"This CHP file is newer than the software parsing them. Results may be suspect."</font>; <font color="#ff0000">## die here, perhaps?</font><BR>    <font color="#0000ff"><b>}</b></font>

    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 12<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">"no_cols"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_rows"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_qc_units"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font>= <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"S2V2"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
    
    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"chip_type"</font><font color="#0000ff"><b>}</b></font>=<font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"chip_type"</font><font color="#0000ff"><b>}</b></font>!=0<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>die</b></font> <font color="#007400">"This software does not process non-expression arrays"</font>;
    <font color="#0000ff"><b>}</b></font>
    
    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"com_progid"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
    
    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"cel_file_name"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"probe_array_type"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"algorithm_name"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"algorithm_version"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;

    <font color="#ff0000">## Algorithm parameters</font><BR>    
    <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$no_algorithm_params</font> = <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

	<font color="#ff0000">## get varying number of parameter names and values and read into hash </font><BR>	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%algorithm_params</font>; 
	<font color="#0000ff"><b>for</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=0;<font color="#1f32ff">$i</font>&lt;<font color="#1f32ff">$no_algorithm_params</font>;<font color="#1f32ff">$i</font>++<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$name</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$value</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	    <font color="#1f32ff">$algorithm_params</font><font color="#0000ff"><b>{</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="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"algorithm_params"</font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%algorithm_params</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#ff0000">## Summary statistics</font><BR>
    <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$no_stats</font> = <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

	<font color="#ff0000">## get varying number of parameter names and values and read into hash </font><BR>	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;
	<font color="#0000ff"><b>for</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=0;<font color="#1f32ff">$i</font>&lt;<font color="#1f32ff">$no_stats</font>;<font color="#1f32ff">$i</font>++<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$name</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$value</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">unpack_length_string</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	    <font color="#ff0000">## Strip trailing space</font><BR>	    <font color="#1f32ff">$value</font>=~s<font color="#006400"><b>/\s*$/</b></font>/o;<BR>	    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</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="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"summary_statistics"</font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%h</font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#ff0000">## Background calculation</font><BR>
    <font color="#0000ff"><b>{</b></font>
	<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 8<font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$m</font>;
	<font color="#0000ff"><b>(</b></font><font color="#1f32ff">$m</font>,<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"smooth_factor"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>)</b></font> = <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"Vf"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;
	
	<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"zones"</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="#1f32ff">%zone_info</font>; 
	<font color="#0000ff"><b>for</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=0;<font color="#1f32ff">$i</font>&lt;<font color="#1f32ff">$m</font>;<font color="#1f32ff">$i</font>++<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 12<font color="#0000ff"><b>)</b></font>;
	    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@zone</font> = <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"f3"</font>, <font color="#1f32ff">$buffer</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">"zones"</font><font color="#0000ff"><b>}</b></font><font color="#0000ff"><b>}</b></font>,\<font color="#1f32ff">@zone</font>;
	<font color="#0000ff"><b>}</b></font>
    <font color="#0000ff"><b>}</b></font>

    <font color="#ff0000">## Actual data. This is the bit that would need to be added to, if we did SNP etc. arrays</font><BR>
    <font color="#0000ff"><b>{</b></font>
	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$size</font>;
	<font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 5<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">"analysis_type"</font><font color="#0000ff"><b>}</b></font>,<font color="#1f32ff">$size</font><font color="#0000ff"><b>)</b></font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"CV"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%data</font>;

	<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$probesetlist</font>=<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"cdf"</font><font color="#0000ff"><b>}</b></font>-&gt;<font color="#ff8204">probesets</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font>;

	<font color="#0000ff"><b>for</b></font> <font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$i</font>=0;<font color="#1f32ff">$i</font>&lt;<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"no_units"</font><font color="#0000ff"><b>}</b></font>;<font color="#1f32ff">$i</font>++<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, <font color="#1f32ff">$size</font><font color="#0000ff"><b>)</b></font>;
	    
	    <font color="#ff0000">## Non-comparison analysis</font><BR>	    
	    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"analysis_type"</font><font color="#0000ff"><b>}</b></font>==0 || <font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"analysis_type"</font><font color="#0000ff"><b>}</b></font>==2<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@results</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"Cf2S2"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;
		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;
		<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==0<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"P"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==1<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"M"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==2<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"A"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==3<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"N"</font>;
		<font color="#0000ff"><b>}</b></font>
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionPValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>1<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Signal"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>2<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>3<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairsUsed"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>4<font color="#0000ff"><b>]</b></font>;

		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Probeset"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>;

		<font color="#1f32ff">$data</font><font color="#0000ff"><b>{</b></font><font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>-&gt;<font color="#ff8204">name</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%h</font>;

	    <font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>else</b></font> <font color="#0000ff"><b>{</b></font>
		<font color="#ff0000">## Comparison analysis</font><BR>		<font color="#1f32ff">$self</font>-&gt;<font color="#0000ff"><b>{</b></font><font color="#007400">"comparison"</font><font color="#0000ff"><b>}</b></font>=1;
		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">@results</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"Cf2S2Cf4S"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;
		<font color="#0000ff"><b>my</b></font> <font color="#1f32ff">%h</font>;
		<font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==0<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"P"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==1<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"M"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==2<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"A"</font>;
		<font color="#0000ff"><b>}</b></font> <font color="#0000ff"><b>elsif</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>0<font color="#0000ff"><b>]</b></font>==3<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
		    <font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionCall"</font><font color="#0000ff"><b>}</b></font>=<font color="#007400">"N"</font>;
		<font color="#0000ff"><b>}</b></font>
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"DetectionPValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>1<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Signal"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>2<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>3<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"StatPairsUsed"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>4<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Change"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>6<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"ChangePValue"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>7<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatio"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>8<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatioLow"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>9<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"SignalLogRatioHigh"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>10<font color="#0000ff"><b>]</b></font>;
		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"CommonPairs"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$results</font><font color="#0000ff"><b>[</b></font>11<font color="#0000ff"><b>]</b></font>;

		<font color="#1f32ff">$h</font><font color="#0000ff"><b>{</b></font><font color="#007400">"Probeset"</font><font color="#0000ff"><b>}</b></font>=<font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>;

		<font color="#1f32ff">$data</font><font color="#0000ff"><b>{</b></font><font color="#1f32ff">$probesetlist</font>-&gt;<font color="#0000ff"><b>[</b></font><font color="#1f32ff">$i</font><font color="#0000ff"><b>]</b></font>-&gt;<font color="#ff8204">name</font><font color="#0000ff"><b>(</b></font><font color="#0000ff"><b>)</b></font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%h</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">"probe_set_results"</font><font color="#0000ff"><b>}</b></font>=\<font color="#1f32ff">%data</font>;
    <font color="#0000ff"><b>}</b></font></pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE5"></A><B>algorithm_name</B></TD><TD><A HREF="#POD3">description</A></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="#ff0000"><b>algorithm_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">"algorithm_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">"algorithm_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="CODE6"></A><B>algorithm_params</B></TD><TD><A HREF="#POD4">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>algorithm_params</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">"algorithm_params"</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">"algorithm_params"</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>algorithm_version</B></TD><TD><A HREF="#POD5">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>algorithm_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>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">"algorithm_version"</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">"algorithm_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="CODE8"></A><B>background_zones</B></TD><TD><A HREF="#POD6">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>background_zones</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">"zones"</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">"zones"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE9"></A><B>cols</B></TD><TD><A HREF="#POD7">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>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">"no_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">"no_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="CODE10"></A><B>new</B></TD><TD><A HREF="#POD8">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>new</b></font>
 {<pre>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$proto</font> = <font color="#4169e1"><b>shift</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$class</font> = <font color="#4169e1"><b>ref</b></font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$proto</font><font color="#0000ff"><b>)</b></font>||<font color="#1f32ff">$proto</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">"cdf"</font><font color="#0000ff"><b>}</b></font>=<font color="#4169e1"><b>shift</b></font>;

    <font color="#4169e1"><b>bless</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$self</font>, <font color="#1f32ff">$class</font><font color="#0000ff"><b>)</b></font>;          <font color="#ff0000">## reconsecrate</font><BR>    <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="CODE11"></A><B>original_com_progid</B></TD><TD><A HREF="#POD9">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_com_progid</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">"com_progid"</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_format</B></TD><TD><A HREF="#POD10">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_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="CODE13"></A><B>original_number_of_probes</B></TD><TD><A HREF="#POD11">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_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">"no_units"</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>original_number_qc_units</B></TD><TD><A HREF="#POD12">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>original_number_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">"no_qc_units"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE15"></A><B>original_version</B></TD><TD><A HREF="#POD13">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>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="CODE16"></A><B>parse_from_file</B></TD><TD><A HREF="#POD14">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_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> CHP,<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>\*CHP<font color="#0000ff"><b>)</b></font>;

    <font color="#4169e1"><b>close</b></font> CHP;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE17"></A><B>parse_from_filehandle</B></TD><TD><A HREF="#POD15">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>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="#0000ff"><b>my</b></font> <font color="#1f32ff">$fh</font>=<font color="#4169e1"><b>shift</b></font>;

    <font color="#4169e1"><b>binmode</b></font> <font color="#1f32ff">$fh</font>;
    
    <font color="#ff0000">## First step- detect whether it's a GCOS or MAS5 file</font><BR>    
    <font color="#ff0000">## A buffer for reading things into</font><BR>    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$buffer</font>; 

    <font color="#ff0000">## XDA files have their first feature as a magic number, 65</font><BR>
    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$magic_number</font> = <font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$magic_number</font>==65<font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#ff0000">## It's a GCOS v1.2 &quot;v4 file&quot;, XDA file! Hurrah!</font><BR>	<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_parse_xda</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>return</b></font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#ff0000">## MAS5 files have their first feature as a string</font><BR>
    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 18, 4<font color="#0000ff"><b>)</b></font>;
    
    <font color="#1f32ff">$magic_number</font>=<font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"A22"</font>,<font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>if</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$magic_number</font> <font color="#0000ff"><b>eq</b></font> <font color="#007400">"GeneChip Sequence File"</font><font color="#0000ff"><b>)</b></font> <font color="#0000ff"><b>{</b></font>
	<font color="#ff0000">## It's a MAS5/GCOS v1.0 &quot;v3 file&quot;! Yippee!</font><BR>	<font color="#1f32ff">$self</font>-&gt;<font color="#ff8204">_parse_mas5</font><font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font><font color="#0000ff"><b>)</b></font>;
	<font color="#0000ff"><b>return</b></font>;
    <font color="#0000ff"><b>}</b></font>

    <font color="#4169e1"><b>die</b></font> <font color="#007400">"This doesn't look like a CHP file to me. I can only understand certain CHP filetypes, however\n"</font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE18"></A><B>parse_from_string</B></TD><TD><A HREF="#POD16">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE17">prev</A></TD><TD WIDTH="30"><A HREF="#CODE19">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> CHP,<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>\*CHP<font color="#0000ff"><b>)</b></font>;

    <font color="#4169e1"><b>close</b></font> CHP;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE19"></A><B>probe_array_type</B></TD><TD><A HREF="#POD17">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE18">prev</A></TD><TD WIDTH="30"><A HREF="#CODE20">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>probe_array_type</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">"probe_array_type"</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">"probe_array_type"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE20"></A><B>probe_set_results</B></TD><TD><A HREF="#POD18">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE19">prev</A></TD><TD WIDTH="30"><A HREF="#CODE21">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>probe_set_results</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">"probe_set_results"</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">"probe_set_results"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE21"></A><B>rows</B></TD><TD><A HREF="#POD19">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE20">prev</A></TD><TD WIDTH="30"><A HREF="#CODE22">next</A></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">"no_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">"no_rows"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE22"></A><B>smooth_factor</B></TD><TD><A HREF="#POD20">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE21">prev</A></TD><TD WIDTH="30"><A HREF="#CODE23">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>smooth_factor</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">"smooth_factor"</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">"smooth_factor"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE23"></A><B>summary_statistics</B></TD><TD><A HREF="#POD21">description</A></TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE22">prev</A></TD><TD WIDTH="30"><A HREF="#CODE24">next</A></TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>summary_statistics</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">"summary_statistics"</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">"summary_statistics"</font><font color="#0000ff"><b>}</b></font>;</pre>}<BR>
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0">
<TR BGCOLOR="#dcab68"><TD WIDTH="200"><A NAME="CODE24"></A><B>unpack_length_string</B></TD><TD>description</TD><TD WIDTH="30"><A HREF="#TOP">top</A></TD><TD WIDTH="30"><A HREF="#CODE23">prev</A></TD><TD WIDTH="30">next</TD></TR></TABLE>
<font color="#0000ff"><b>sub</b></font> <font color="#ff0000"><b>unpack_length_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">$fh</font>=<font color="#4169e1"><b>shift</b></font>;
    
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$buffer</font>;

    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, 4<font color="#0000ff"><b>)</b></font>;
    <font color="#0000ff"><b>my</b></font> <font color="#1f32ff">$len</font> = <font color="#4169e1"><b>unpack</b></font> <font color="#0000ff"><b>(</b></font><font color="#007400">"V"</font>, <font color="#1f32ff">$buffer</font><font color="#0000ff"><b>)</b></font>;
    <font color="#4169e1"><b>read</b></font> <font color="#0000ff"><b>(</b></font><font color="#1f32ff">$fh</font>, <font color="#1f32ff">$buffer</font>, <font color="#1f32ff">$len</font><font color="#0000ff"><b>)</b></font>;

    <font color="#0000ff"><b>return</b></font> <font color="#4169e1"><b>unpack</b></font><font color="#0000ff"><b>(</b></font><font color="#007400">"a"</font>.<font color="#1f32ff">$len</font>,<font color="#1f32ff">$buffer</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 CHP files produced by the Affymetrix software<BR>MAS 5 and GCOS v1.2. It can also process files produced by GCOS v1.0<BR>in theory. However the authors of this module have never actually<BR>seen an actual GCOS v1.0 file, and so we rely on the specification<BR>supplied by Affymetrix only. If you have GCOS v1.0 files, feedback<BR>as to whether the code actually works is welcome.<BR><BR>Whatever file format you use the module should work transparently.<BR><BR>These modules are focused on GCOS v1.2 CHP files. The MAS5 CHP<BR>files actually contain a lot of extra information that is not<BR>displayed in MAS5 or GCOS. This information is thrown away by the<BR>parser.<BR><BR>This module can only do expression arrays.<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 CHP files as well as reading them.<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>