IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 10, 2006, 8:52:00 AM (20 years ago)
Author:
eugene
Message:

updating bg_stdev, bg_mean_stdev tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippScripts/scripts/detrend_reject_exp.pl

    r9453 r9457  
    7878my @expTags;                    # Array of exposure IDs
    7979my @means;                      # Array of means
    80 my @stdevs;                     # Array of stdevs
     80my @variances;                  # Array of variances
    8181my @meanStdevs;                 # Array of mean stdevs
    8282my @accept;                     # Array of accept flags
     
    9191    push @expTags, $exposure->{exp_tag};
    9292    push @means, $exposure->{bg};
    93     push @stdevs, $exposure->{bg_stdev};
    94     push @meanStdevs, $exposure->{bg_mean_stdev};
     93    push @variances, ($exposure->{bg_stdev}*$exposure->{bg_stdev});
     94    push @meanStdevs, $exposure->{bg_mean_stdev}; ### XXX are we keeping this or stdev(mean)?
    9595    push @accept, $exposure->{accept};
    9696    push @include, $exposure->{include};
     
    9898my $meanStats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
    9999$meanStats->add_data(@means);
    100 my $stdevStats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
    101 $stdevStats->add_data(@stdevs);
     100my $variancestats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
     101$variancestats->add_data(@variances);
    102102my $meanStdevStats = Statistics::Descriptive::Sparse->new(); # Statistics calculator
    103103$meanStdevStats->add_data(@meanStdevs);
     
    111111    if not exists REJECT_MEAN_STDEV->{$det_type};
    112112
     113# rejections based on comparison with ensemble statistics
     114my $mean = $meanStats->mean();
     115my $meanStdev = $meanStats->standard_deviation();
     116if (not defined $meanStdev) { $meanStdev = 0; }
     117
     118my $var = $variances->mean();
     119my $varStdev = $variances->standard_deviation();
     120
    113121# Go through again to do rejection, and update the database for each exposure
    114122my $numChanges = 0;             # Number of exposures with changed status
     
    117125    my $command = "$dettool -updateresidexp -det_id $det_id -iteration $iter -exp_tag $expTag"; # Command to run
    118126    my $reject = 0;             # Reject this exposure?
    119     my $not_reject = 0;         # Reject this exposure?
     127
    120128    if (not $accept[$i]) {
    121129        # Rejected this at an earlier stage
    122130        print "Rejecting $expTag based on earlier determination.\n";
    123131        $reject = 1;
    124     } elsif (defined REJECT_MEAN->{$det_type} and
    125              defined $meanStats->standard_deviation() and
    126              $meanStats->standard_deviation() > 0 and
    127              ($means[$i] - $meanStats->mean()) / $meanStats->standard_deviation() > REJECT_MEAN->{$det_type}) {
    128         print "Rejecting $expTag based on bad mean: " .
    129             (($means[$i] - $meanStats->mean()) / $meanStats->standard_deviation()) .
    130             " vs " . REJECT_MEAN->{$det_type} . "\n";
    131         $not_reject = 1;
    132     } elsif (defined REJECT_STDEV->{$det_type} and
    133              defined $stdevStats->standard_deviation() and
    134              $stdevStats->standard_deviation() > 0 and
    135              ($stdevs[$i] - $stdevStats->mean()) / $stdevStats->standard_deviation() >
    136              REJECT_STDEV->{$det_type}) {
    137         print "Rejecting $expTag based on bad stdev: " .
    138             (($stdevs[$i] - $stdevStats->mean()) / $stdevStats->standard_deviation()) .
    139             " vs " . REJECT_STDEV->{$det_type} . "\n";
    140         $not_reject = 1;
    141     } elsif (defined REJECT_MEAN_STDEV->{$det_type} and
    142              defined $meanStdevStats->standard_deviation() and
    143              $meanStdevStats->standard_deviation() > 0 and
    144              ($meanStdevs[$i] - $meanStdevStats->mean()) / $meanStdevStats->standard_deviation() >
    145              REJECT_MEAN_STDEV->{$det_type}) {
    146         print "Rejecting $expTag based on bad stdev: " .
    147             (($meanStdevs[$i] - $meanStdevStats->mean()) / $meanStdevStats->standard_deviation()) .
    148             " vs " . REJECT_MEAN_STDEV->{$det_type} . "\n";
    149         $not_reject = 1;
    150     }
    151    
     132        goto UPDATE;
     133    }
     134    if (REJECT_MEAN->{$det_type} && ($meanStdev > 0)) {
     135        my $nSigma = abs($means[$i] - $mean) / $meanStdev;
     136        if ($nSigma > REJECT_MEAN->{$det_type}) {
     137            print "Rejecting $expTag based on outlier mean value: " .
     138                "$means[$i] is $nSigma vs " . REJECT_MEAN->{$det_type} . "\n";
     139            $reject = 1;
     140            goto UPDATE;
     141        }
     142    } else {
     143        print "no rejection for exposure mean\n";
     144    }
     145    if (defined REJECT_STDEV->{$det_type} && ($varStdev >0)) {
     146        my $nSigma = abs($var[$i] - $var) / $varStdev;
     147        if ($nSigma > REJECT_STDEV->{$det_type}) {
     148            print "Rejecting $expTag based on outlier stdev: " .
     149                sqrt($variances[$i]) " is $nSigma vs " . REJECT_STDEV->{$det_type} . "\n";
     150            $reject = 1;
     151            goto UPDATE;
     152        }
     153    } else {
     154        print "no rejection for exposure stdev\n";
     155    }
     156   
     157  UPDATE:
    152158    if ($reject) {
    153159        $command .= ' -reject';
     
    159165        $numChanges++;
    160166    }
    161    
     167
    162168    unless ($no_update) {
    163169        # Update
     
    182188# Put the result into the database
    183189unless ($no_update) {
    184     my $command = "$dettool -adddetrunsummary -det_id $det_id -iteration $iter " .
    185         "-bg " . $meanStats->mean() . " -bg_stdev " . $stdevStats->mean() .
    186         " -bg_mean_stdev " . $meanStdevStats->mean();
     190    my $command = "$dettool -adddetrunsummary -det_id $det_id -iteration $iter" .
     191        " -bg " . $mean . " -bg_stdev " . sqrt($var) .
     192        " -bg_mean_stdev " . $meanStdev;
    187193    $command .= " -accept" if $master;
    188194   
Note: See TracChangeset for help on using the changeset viewer.