IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 8352


Ignore:
Timestamp:
Aug 15, 2006, 11:50:27 AM (20 years ago)
Author:
Paul Price
Message:

Allowing undefined constants and variables arrays.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/PS-IPP-Config/lib/PS/IPP/Metadata/Stats.pm

    r8310 r8352  
    11# Copyright (c) 2006  Paul Price, Joshua Hoblitt
    22#
    3 # $Id: Stats.pm,v 1.1 2006-08-12 04:26:12 price Exp $
     3# $Id: Stats.pm,v 1.2 2006-08-15 21:50:27 price Exp $
    44
    55package PS::IPP::Metadata::Stats;
     
    105105
    106106    # Check that we found everything for the constants
    107     foreach my $constant (@{$self->constants()}) {
    108         if (not defined $self->{data}->{$constant}->{value}) {
    109             carp "Unable to find value for ", $constant, "\n";
     107    my $constants = $self->constants(); # Array of constants
     108    if (defined $constants) {
     109        foreach my $constant (@$constants) {
     110            if (not defined $self->{data}->{$constant}->{value}) {
     111                carp "Unable to find value for ", $constant, "\n";
     112            }
    110113        }
    111114    }
    112115
    113116    # Get mean, stdev for the variables
    114     foreach my $variable (@{$self->variables()}) {
    115         my $info = $self->{data}->{$variable}; # The information about this particular variable
    116         my $array = $info->{data}; # The array of values collected
    117         if (scalar @$array == 0) {
    118             carp "Unable to find any values for ", $variable, "\n";
    119             next;
    120         }
    121 
    122         # Get statistics on the value
    123         my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
    124         $stats->add_data(@$array);
    125         $info->{mean} = $stats->mean();
    126         $info->{stdev} = $stats->standard_deviation();
    127     }
    128        
     117    my $variables = $self->variables(); # Array of variables
     118    if (defined $variables) {
     119        foreach my $variable (@$variables) {
     120            my $info = $self->{data}->{$variable}; # The information about this particular variable
     121            my $array = $info->{data}; # The array of values collected
     122            if (scalar @$array == 0) {
     123                carp "Unable to find any values for ", $variable, "\n";
     124                next;
     125            }
     126
     127            # Get statistics on the value
     128            my $stats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
     129            $stats->add_data(@$array);
     130            $info->{mean} = $stats->mean();
     131            $info->{stdev} = $stats->standard_deviation();
     132        }
     133    }
     134   
    129135    # Get mean, stdev, mean stdev for the background
    130     my $meanStats = Statistics::Descriptive::Sparse->new(); # Statistics for mean
    131     $meanStats->add_data(@backgrounds);
    132     $self->bg_mean($meanStats->mean());
    133     $self->bg_stdev($meanStats->standard_deviation());
    134     my $stdevStats = Statistics::Descriptive::Sparse->new(); # Statistics for standard deviation
    135     $stdevStats->add_data(@bgStdevs);
    136     $self->bg_mean_stdev($stdevStats->mean());
     136    if (scalar @backgrounds > 0) {
     137        my $meanStats = Statistics::Descriptive::Sparse->new(); # Statistics for mean
     138        $meanStats->add_data(@backgrounds);
     139        $self->bg_mean($meanStats->mean());
     140        $self->bg_stdev($meanStats->standard_deviation());
     141    } else {
     142        $self->bg_mean(undef);
     143        $self->bg_stdev(undef);
     144    }
     145    if (scalar @bgStdevs > 0) {
     146        my $stdevStats = Statistics::Descriptive::Sparse->new(); # Statistics for standard deviation
     147        $stdevStats->add_data(@bgStdevs);
     148        $self->bg_mean_stdev($stdevStats->mean());
     149    } else {
     150        $self->bg_mean_stdev(undef);
     151    }
    137152
    138153    return $self;
Note: See TracChangeset for help on using the changeset viewer.