Changeset 13972
- Timestamp:
- Jun 25, 2007, 2:28:28 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm
r13965 r13972 1 1 # Copyright (c) 2006 Paul Price, Joshua Hoblitt 2 2 # 3 # $Id: Stats.pm,v 1.1 5 2007-06-25 01:24:20eugene Exp $3 # $Id: Stats.pm,v 1.16 2007-06-26 00:28:28 eugene Exp $ 4 4 5 5 package PS::IPP::Metadata::Stats; … … 24 24 25 25 use base qw( Class::Accessor::Fast ); 26 __PACKAGE__->mk_accessors( qw( bg_mean bg_stdev bg_mean_stdev fringe_mean fringe_mean_stdev fringe_err 26 __PACKAGE__->mk_accessors( qw( bg_mean bg_stdev bg_mean_stdev 27 fringe_mean fringe_mean_stdev fringe_err 28 dfringe_mean dfringe_mean_stdev dfringe_err 27 29 constants variables bg_data bg_stdev_data ) ); 28 30 … … 41 43 fringe_mean => [], # Fringe amplitudes 42 44 fringe_err => [], # Fringe amplitude errors 43 fringe_mean_stdev => [], # Fringe amplitude errors 45 fringe_mean_stdev => [], # Fringe amplitude stdev 46 dfringe_mean => [], # Fringe residual amplitudes 47 dfringe_err => [], # Fringe residual amplitude errors 48 dfringe_mean_stdev => [], # Fringe residual amplitude stdev 44 49 constants => $constants, # Array of values that should be constant through the FPA 45 50 variables => $variables, # Array of values that may be variable through the FPA … … 48 53 fringe_data => [], # Fringe amplitudes each component 49 54 fringe_err_data => [], # Fringe errors for each component 55 dfringe_data => [], # Fringe residual amplitudes each component 56 dfringe_err_data => [], # Fringe residual errors for each component 50 57 data => {} # The data 51 58 }; … … 118 125 $self->bg_mean($stats->mean()); 119 126 $self->bg_mean_stdev($stats->standard_deviation() || 0); 120 # the stdev of a set of 1 is the undefined however that 121 # doesn't do us much good so I'm changing undef to 0 122 } else { 123 $self->bg_mean(undef); 124 $self->bg_mean_stdev(undef); 127 print STDERR "mean_stdev: " . $self->bg_mean_stdev() . "\n"; 128 # the stdev of a set of 1 is undefined. that doesn't do 129 # us much good so I'm changing undef to 0 130 } else { 131 # if we have no data to measure the value, return NAN 132 $self->bg_mean('NAN'); 133 $self->bg_mean_stdev('NAN'); 125 134 } 126 135 if (scalar @{$self->{bg_stdev_data}} > 0) { … … 133 142 $self->bg_stdev( sqrt( $stats->mean() ) ); 134 143 } else { 135 $self->bg_stdev( undef);144 $self->bg_stdev('NAN'); 136 145 } 137 146 … … 143 152 push @{$self->{fringe_mean}}, $stats->mean(); 144 153 push @{$self->{fringe_mean_stdev}}, ($stats->standard_deviation() || 0); 145 # the stdev of a set of 1 is the undefined however that 146 # doesn't do us much good so I'm changing undef to 0 147 } 154 # the stdev of a set of 1 is undefined. that doesn't do 155 # us much good so I'm changing undef to 0 156 } 157 } else { 158 # create a single NAN entry 159 push @{$self->{fringe_mean}}, 'NAN'; 160 push @{$self->{fringe_mean_stdev}}, 'NAN'; 148 161 } 149 162 if (scalar @{$self->{fringe_err_data}} > 0) { … … 157 170 push @{$self->{fringe_err}}, sqrt($stats->mean()); 158 171 } 172 } else { 173 push @{$self->{fringe_err}}, 'NAN'; 174 } 175 176 # Get fringe residual measurements 177 if (scalar @{$self->{dfringe_data}} > 0) { 178 foreach my $array (@{$self->{dfringe_data}}) { 179 my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator 180 $stats->add_data(@$array); 181 push @{$self->{dfringe_mean}}, $stats->mean(); 182 push @{$self->{dfringe_mean_stdev}}, ($stats->standard_deviation() || 0); 183 # the stdev of a set of 1 is undefined. that doesn't do 184 # us much good so I'm changing undef to 0 185 } 186 } else { 187 # create a single NAN entry 188 push @{$self->{dfringe_mean}}, 'NAN'; 189 push @{$self->{dfringe_mean_stdev}}, 'NAN'; 190 } 191 if (scalar @{$self->{dfringe_err_data}} > 0) { 192 foreach my $array (@{$self->{dfringe_err_data}}) { 193 my @variances; 194 foreach my $value (@$array) { 195 push @variances, $value**2; 196 } 197 my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator 198 $stats->add_data(@variances); 199 push @{$self->{dfringe_err}}, sqrt($stats->mean()); 200 } 201 } else { 202 push @{$self->{dfringe_err}}, 'NAN'; 159 203 } 160 204 … … 236 280 push @{$self->{bg_data}}, $entry->{value}; 237 281 } 238 } elsif ($entry->{name} =~ /^FRINGE/) { 282 next; 283 } 284 if ($entry->{name} =~ /^FRINGE_RESID/) { 285 my ($num) = $entry->{name} =~ /_(\d+)$/; # Component number 286 if ($entry->{name} =~ /_ERR_/) { 287 my $arrayRef = ${$self->{dfringe_err_data}}[$num]; 288 unless (defined $arrayRef) { 289 my @array; 290 $arrayRef = \@array; 291 ${$self->{dfringe_err_data}}[$num] = $arrayRef; 292 } 293 push @$arrayRef, $entry->{value}; 294 } else { 295 my $arrayRef = ${$self->{dfringe_data}}[$num]; 296 unless (defined $arrayRef) { 297 my @array; 298 $arrayRef = \@array; 299 ${$self->{dfringe_data}}[$num] = $arrayRef; 300 } 301 push @$arrayRef, $entry->{value}; 302 } 303 next; 304 } 305 if ($entry->{name} =~ /^FRINGE/) { 239 306 my ($num) = $entry->{name} =~ /_(\d+)$/; # Component number 240 307 if ($entry->{name} =~ /_ERR_/) { … … 255 322 push @$arrayRef, $entry->{value}; 256 323 } 257 } else { 258 $self->_check_values($entry);259 } 324 next; 325 } 326 $self->_check_values($entry); 260 327 } 261 328
Note:
See TracChangeset
for help on using the changeset viewer.
