Index: trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm
===================================================================
--- trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm	(revision 8738)
+++ trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm	(revision 8739)
@@ -1,5 +1,5 @@
 # Copyright (c) 2006  Paul Price, Joshua Hoblitt
 #
-# $Id: Stats.pm,v 1.5 2006-08-30 02:19:16 jhoblitt Exp $
+# $Id: Stats.pm,v 1.6 2006-09-06 01:47:38 jhoblitt Exp $
 
 package PS::IPP::Metadata::Stats;
@@ -21,30 +21,30 @@
 
 sub new {
-    my $class = shift;		# Class name
-    my $constants = shift;	# Array of values that should be constant through the FPA
-    my $variables = shift;	# Array of values that may be variable through the FPA
+    my $class = shift;                # Class name
+    my $constants = shift;        # Array of values that should be constant through the FPA
+    my $variables = shift;        # Array of values that may be variable through the FPA
 
     my $self = { bg_mean => undef, # Mean of the mean backgrounds
-		 bg_stdev => undef, # Standard deviation of the mean backgrounds
-		 bg_mean_stdev => undef, # Mean of the standard deviation of the backgrounds
-		 constants => $constants, # Array of values that should be constant through the FPA
-		 variables => $variables, # Array of values that may be variable through the FPA
-		 bg_data => [], # Array of background values
-		 bg_stdev_data => [],# Array of background standard deviations
-		 data => {}	# The data
-		 };
+                 bg_stdev => undef, # Standard deviation of the mean backgrounds
+                 bg_mean_stdev => undef, # Mean of the standard deviation of the backgrounds
+                 constants => $constants, # Array of values that should be constant through the FPA
+                 variables => $variables, # Array of values that may be variable through the FPA
+                 bg_data => [], # Array of background values
+                 bg_stdev_data => [],# Array of background standard deviations
+                 data => {}        # The data
+                 };
     
     # Populate object
     foreach my $constant (@$constants) {
-	$self->{data}->{$constant} = { type => 'constant', # Type of value (constant/variable)
-				       value => undef # The actual variable
-				       };
+        $self->{data}->{$constant} = { type => 'constant', # Type of value (constant/variable)
+                                       value => undef # The actual variable
+                                       };
     }
     foreach my $variable (@$variables) {
-	$self->{data}->{$variable} = { type => 'variable', # Type of value (constant/variable)
-				       data => [], # Array of data values
-				       mean => undef, # Mean of data values
-				       stdev => undef # Standard deviation of data values
-				       };
+        $self->{data}->{$variable} = { type => 'variable', # Type of value (constant/variable)
+                                       data => [], # Array of data values
+                                       mean => undef, # Mean of data values
+                                       stdev => undef # Standard deviation of data values
+                                       };
     }
 
@@ -56,96 +56,96 @@
 # Given a parsed metadata from ppStats, assemble summary statistics
 sub parse {
-    my $self = shift;		# Where we'll put the information
-    my $md = shift;		# Parsed metadata, from PS::IPP::Metadata::Config
+    my $self = shift;                # Where we'll put the information
+    my $md = shift;                # Parsed metadata, from PS::IPP::Metadata::Config
 
     # Descend the FPA hierarchy
     foreach my $fpaItem (@$md) {
-	if ($fpaItem->{class} eq "metadata") {
-	    my $chipName = $fpaItem->{name}; # Name of chip
-	    my $chipData = $fpaItem->{value}; # Chip-level data
-	    foreach my $chipItem (@$chipData) {
-		if ($chipItem->{class} eq "metadata") {
-		    my $cellName = $chipItem->{name}; # Name of cell
-		    my $cellData = $chipItem->{value}; # Cell-level data
-		    my $bgName; # Name of the value we measured
-		    my $bgStdevName; # Name of the stdev we measured
-		    foreach my $cellItem (@$cellData) {
-			if ($cellItem->{name} =~ /^(SAMPLE|ROBUST|FITTED|CLIPPED)_/) {
-			    # It's a statistic of some sort
-			    if ($cellItem->{name} =~ /_STDEV$/) {
-				if (defined $bgStdevName) {
-				    carp "Ignoring duplicate background stdev (", $cellItem->{name}, "). ",
-				    "Original is ", $bgStdevName, "\n";
-				    next;
-				}
-				$bgStdevName = $cellItem->{name};
-				push @{$self->{bg_stdev_data}}, $cellItem->{value};
-			    } else {
-				if (defined $bgName) {
-				    carp "Ignoring duplicate background value (", $cellItem->{name}, "). ",
-				    "Original is ", $bgName, "\n";
-				    next;
-				}
-				$bgName = $cellItem->{name};
-				push @{$self->{bg_data}}, $cellItem->{value};
-			    }
-			} else {
-			    $self->_check_values($cellItem);
-			}
-		    }
-		} else {
-		    $self->_check_values($chipItem);
-		}
-	    }
-	} else {
-	    $self->_check_values($fpaItem);
-	}
+        if ($fpaItem->{class} eq "metadata") {
+            my $chipName = $fpaItem->{name}; # Name of chip
+            my $chipData = $fpaItem->{value}; # Chip-level data
+            foreach my $chipItem (@$chipData) {
+                if ($chipItem->{class} eq "metadata") {
+                    my $cellName = $chipItem->{name}; # Name of cell
+                    my $cellData = $chipItem->{value}; # Cell-level data
+                    my $bgName; # Name of the value we measured
+                    my $bgStdevName; # Name of the stdev we measured
+                    foreach my $cellItem (@$cellData) {
+                        if ($cellItem->{name} =~ /^(SAMPLE|ROBUST|FITTED|CLIPPED)_/) {
+                            # It's a statistic of some sort
+                            if ($cellItem->{name} =~ /_STDEV$/) {
+                                if (defined $bgStdevName) {
+                                    carp "Ignoring duplicate background stdev (", $cellItem->{name}, "). ",
+                                    "Original is ", $bgStdevName, "\n";
+                                    next;
+                                }
+                                $bgStdevName = $cellItem->{name};
+                                push @{$self->{bg_stdev_data}}, $cellItem->{value};
+                            } else {
+                                if (defined $bgName) {
+                                    carp "Ignoring duplicate background value (", $cellItem->{name}, "). ",
+                                    "Original is ", $bgName, "\n";
+                                    next;
+                                }
+                                $bgName = $cellItem->{name};
+                                push @{$self->{bg_data}}, $cellItem->{value};
+                            }
+                        } else {
+                            $self->_check_values($cellItem);
+                        }
+                    }
+                } else {
+                    $self->_check_values($chipItem);
+                }
+            }
+        } else {
+            $self->_check_values($fpaItem);
+        }
     }
 
     # Check that we found everything for the constants
-    my $constants = $self->constants();	# Array of constants
+    my $constants = $self->constants();        # Array of constants
     if (defined $constants) {
-	foreach my $constant (@$constants) {
-	    if (not defined $self->{data}->{$constant}->{value}) {
-		carp "Unable to find value for ", $constant, "\n";
-	    }
-	}
+        foreach my $constant (@$constants) {
+            if (not defined $self->{data}->{$constant}->{value}) {
+                carp "Unable to find value for ", $constant, "\n";
+            }
+        }
     }
 
     # Get mean, stdev for the variables
-    my $variables = $self->variables();	# Array of variables
+    my $variables = $self->variables();        # Array of variables
     if (defined $variables) {
-	foreach my $variable (@$variables) {
-	    my $info = $self->{data}->{$variable}; # The information about this particular variable
-	    my $array = $info->{data}; # The array of values collected
-	    if (scalar @$array == 0) {
-		carp "Unable to find any values for ", $variable, "\n";
-		next;
-	    }
-
-	    # Get statistics on the value
-	    my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
-	    $stats->add_data(@$array);
-	    $info->{mean} = $stats->mean();
-	    $info->{stdev} = $stats->standard_deviation();
-	}
+        foreach my $variable (@$variables) {
+            my $info = $self->{data}->{$variable}; # The information about this particular variable
+            my $array = $info->{data}; # The array of values collected
+            if (scalar @$array == 0) {
+                carp "Unable to find any values for ", $variable, "\n";
+                next;
+            }
+
+            # Get statistics on the value
+            my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
+            $stats->add_data(@$array);
+            $info->{mean} = $stats->mean();
+            $info->{stdev} = $stats->standard_deviation();
+        }
     }
     
     # Get mean, stdev, mean stdev for the background
     if (scalar @{$self->{bg_data}} > 0) {
-	my $meanStats = Statistics::Descriptive::Sparse->new(); # Statistics for mean
-	$meanStats->add_data(@{$self->{bg_data}});
-	$self->bg_mean($meanStats->mean());
-	$self->bg_stdev($meanStats->standard_deviation());
+        my $meanStats = Statistics::Descriptive::Sparse->new(); # Statistics for mean
+        $meanStats->add_data(@{$self->{bg_data}});
+        $self->bg_mean($meanStats->mean());
+        $self->bg_stdev($meanStats->standard_deviation());
     } else {
-	$self->bg_mean(undef);
-	$self->bg_stdev(undef);
+        $self->bg_mean(undef);
+        $self->bg_stdev(undef);
     }
     if (scalar @{$self->{bg_stdev_data}} > 0) {
-	my $stdevStats = Statistics::Descriptive::Sparse->new(); # Statistics for standard deviation
-	$stdevStats->add_data(@{$self->{bg_stdev_data}});
-	$self->bg_mean_stdev($stdevStats->mean());
+        my $stdevStats = Statistics::Descriptive::Sparse->new(); # Statistics for standard deviation
+        $stdevStats->add_data(@{$self->{bg_stdev_data}});
+        $self->bg_mean_stdev($stdevStats->mean());
     } else {
-	$self->bg_mean_stdev(undef);
+        $self->bg_mean_stdev(undef);
     }
 
@@ -157,27 +157,27 @@
 sub _check_values {
     my $self = shift;
-    my $mdItem = shift;		# Metadata item to check
-
-    my $name = $mdItem->{name};	# Name of the item
+    my $mdItem = shift;                # Metadata item to check
+
+    my $name = $mdItem->{name};        # Name of the item
     my $value = $mdItem->{value}; # Value of the item
 
-    my $data = $self->{data};	# The data
+    my $data = $self->{data};        # The data
     return if not defined $data->{$name}; # Not interested
     my $type = $data->{$name}->{type}; # Type of the item: constant or variable
 
     if ($type eq 'constant') {
-	if (defined $data->{$name}->{value} && ($data->{$name}->{value} ne $value)) {
-	    carp "Warning: different value for ", $name, " found: ", $data->{$name}->{value}, " (old) vs ", 
-	    $value, " (new).  Ignoring new value.\n";
-	    return;
-	}
-	$data->{$name}->{value} = $value;
-	return;
+        if (defined $data->{$name}->{value} && ($data->{$name}->{value} ne $value)) {
+            carp "Warning: different value for ", $name, " found: ", $data->{$name}->{value}, " (old) vs ", 
+            $value, " (new).  Ignoring new value.\n";
+            return;
+        }
+        $data->{$name}->{value} = $value;
+        return;
     }
 
     if ($type eq 'variable') {
-	my $array = $data->{$name}->{data}; # Array containing all the values
-	push @$array, $value;
-	return;
+        my $array = $data->{$name}->{data}; # Array containing all the values
+        push @$array, $value;
+        return;
     }
 
@@ -189,5 +189,5 @@
 sub data {
     my $self = shift;
-    my $name = shift;		# Name of data to return
+    my $name = shift;                # Name of data to return
 
     return $self->{data} if (not defined $name);
