IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33283 for trunk/pstamp


Ignore:
Timestamp:
Feb 16, 2012, 2:37:03 PM (14 years ago)
Author:
bills
Message:

work in progress prior to splitting this file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/pstamp/scripts/detectability_respond.pl

    r33248 r33283  
    103103} # End reading wisdom.
    104104else {
    105 #
    106 # Parse input request file using detect_query_read (as it's already written).
    107 #
     105    #
     106    # Parse input request file using detect_query_read (as it's already written).
     107    #
    108108    my $dqr_command = "$detect_query_read --dbname $imagedb --input $request_file";
    109109    my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
     
    118118    {
    119119        my @column_names = ();
     120        # split output into lines skip until the line which lists the column names is found
     121        # Parse subsequent lines
    120122        foreach my $entry (split /\n/, (join "", @$stdout_buf)) {
    121123            if ($entry =~ /^#/) {
     
    123125                shift(@column_names);  # Dump the hash sign.
    124126            }
    125             else {
     127            elsif (scalar @column_names) {
    126128                # ROWNUM RA1_DEG DEC1_DEG RA2_DEG DEC2_DEG MAG QUERY_ID FPA_ID MJD-OBS FILTER OBSCODE STAGE
    127129                my %row_data;
    128130                @row_data{@column_names} = (split /\s+/, $entry);
    129131                for (my $i = 0; $i <= $#column_names; $i++) {
    130                 push @{ $query{$row_data{"FPA_ID"}}{$column_names[$i]} }, $row_data{$column_names[$i]};
    131                 $Nrows = scalar(keys(%query));
    132 #               print "$row_data{'FPA_ID'} $Nrows $i $column_names[$i] $row_data{$column_names[$i]}\n";
    133             }
    134             }
    135         }
    136     }
    137 #
    138 # Identify target images.  This should properly collate targets on a single imfile.
    139 #
     132                    push @{ $query{$row_data{"FPA_ID"}}{$column_names[$i]} }, $row_data{$column_names[$i]};
     133                    $Nrows = scalar(keys(%query));
     134                    # print "$row_data{'FPA_ID'} $Nrows $i $column_names[$i] $row_data{$column_names[$i]}\n";
     135                }
     136            }
     137        }
     138    }
     139    #
     140    # Identify target images.  This should properly collate targets on a single imfile.
     141    #
    140142    foreach my $fpa_id (keys %query) {
    141143        my %temp_hash;
     
    207209        }
    208210        elsif ($fpa_id eq 'Not_Set') {
     211            # no matching file was found skip
    209212            next;
    210213        }
     
    222225            $need_magic = 0;
    223226        }
    224         my $mjd_min = $mjd;
     227        my $mjd_min = int $mjd;
    225228        my $mjd_max = $mjd + 1;
    226229       
     
    239242       
    240243        foreach my $this_image_ref (@{ $pstamp_images_ref }) {
    241             foreach my $key (sort (keys %{ $this_image_ref } )) {
    242                 my $value = ${ $this_image_ref }{$key};
    243                 if ($key eq 'row_index') {
    244                     $value = join ' ', @{ $this_image_ref->{$key} };
    245                 }
    246 
    247 #               print "$this_image_ref $key $value\n";
    248                 foreach my $valid_index (@{ $this_image_ref->{row_index} }) {
    249                     $query{$fpa_id}{IMAGE}[$valid_index] = $this_image_ref->{image};
    250                     $query{$fpa_id}{MASK}[$valid_index] = $this_image_ref->{mask};
    251                     $query{$fpa_id}{WEIGHT}[$valid_index] = $this_image_ref->{weight};
    252                     $query{$fpa_id}{PSF}[$valid_index] = $this_image_ref->{psf};
    253                     $query{$fpa_id}{STAGE_ID}[$valid_index] = $this_image_ref->{stage_id};
    254                     $query{$fpa_id}{IMAGE_DB}[$valid_index] = $this_image_ref->{imagedb};
    255                     $query{$fpa_id}{NEED_MAGIC}[$valid_index] = $need_magic;
    256                     $query{$fpa_id}{BAD_COMPONENT}[$valid_index] = 0;
    257                    
    258                     if (exists($this_image_ref->{astrom})) {
    259                         $query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{astrom};
    260                     }
    261                     else {
    262                         $query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{cmf};
    263                     }
    264                     if (exists($this_image_ref->{class_id})) {
    265                         $query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{class_id};
    266                         $query{$fpa_id}{CLASS_ID}[$valid_index] = $this_image_ref->{class_id};
    267                        
    268                     }
    269                     else {
    270                         $query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{skycell_id};
    271                         $query{$fpa_id}{CLASS_ID}[$valid_index] = 'fpa';
    272                     }
    273                    
    274                     $query{$fpa_id}{STATE}[$valid_index] = $this_image_ref->{state};
    275                     if (exists($this_image_ref->{data_state})) {
    276                         $query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{data_state};
    277                     }
    278                     else {
    279                         $query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{state};
    280                     }
    281                     $query{$fpa_id}{FAULT}[$valid_index] = 0;
     244
     245            if (0) {
     246                foreach my $key (sort (keys %{ $this_image_ref } )) {
     247                    my $value = ${ $this_image_ref }{$key};
     248                    if ($key eq 'row_index') {
     249                        $value = join ' ', @{ $this_image_ref->{$key} };
     250                    }
     251                    print "$this_image_ref $key $value\n";
     252                }
     253            }
     254
     255
     256            foreach my $valid_index (@{ $this_image_ref->{row_index} }) {
     257                $query{$fpa_id}{IMAGE}[$valid_index] = $this_image_ref->{image};
     258                $query{$fpa_id}{MASK}[$valid_index] = $this_image_ref->{mask};
     259                $query{$fpa_id}{WEIGHT}[$valid_index] = $this_image_ref->{weight};
     260                $query{$fpa_id}{PSF}[$valid_index] = $this_image_ref->{psf};
     261                $query{$fpa_id}{STAGE_ID}[$valid_index] = $this_image_ref->{stage_id};
     262                $query{$fpa_id}{IMAGE_DB}[$valid_index] = $this_image_ref->{imagedb};
     263                $query{$fpa_id}{NEED_MAGIC}[$valid_index] = $need_magic;
     264                $query{$fpa_id}{BAD_COMPONENT}[$valid_index] = 0;
     265               
     266                if (exists($this_image_ref->{astrom})) {
     267                    $query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{astrom};
     268                }
     269                else {
     270                    $query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{cmf};
     271                }
     272                if (exists($this_image_ref->{class_id})) {
     273                    $query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{class_id};
     274                    $query{$fpa_id}{CLASS_ID}[$valid_index] = $this_image_ref->{class_id};
     275                   
     276                }
     277                else {
     278                    $query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{skycell_id};
     279                    $query{$fpa_id}{CLASS_ID}[$valid_index] = 'fpa';
     280                }
     281               
     282                $query{$fpa_id}{STATE}[$valid_index] = $this_image_ref->{state};
     283                if (exists($this_image_ref->{data_state})) {
     284                    $query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{data_state};
     285                }
     286                else {
     287                    $query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{state};
     288                }
     289                $query{$fpa_id}{FAULT}[$valid_index] = 0;
    282290                    $query{$fpa_id}{MAGICKED}[$valid_index] = $this_image_ref->{magicked};
    283                     if ($stage eq 'chip') {
    284                         $query{$fpa_id}{BURNTOOL_STATE}[$valid_index] = $this_image_ref->{burntool_state};
    285                     }
    286                    
    287                     # Determine if the data exists.
    288                     if (($query{$fpa_id}{STATE}[$valid_index] eq 'goto_purged') or
    289                         ($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'purged') or
    290                         ($query{$fpa_id}{STATE}[$valid_index] eq 'drop') or
    291                         ($query{$fpa_id}{STATE}[$valid_index] eq 'error_cleaned') or
    292                         ($query{$fpa_id}{STATE}[$valid_index] eq 'goto_scrubbed') or
    293                         ($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'scrubbed')) {
    294                        
    295                         # image is gone and it's not coming back
    296                         $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_GONE;
    297                     }
    298                     elsif ($need_magic and ($query{$fpa_id}{MAGICKED}[$valid_index] eq 0)) {
    299                         $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_DESTREAKED;
    300                     }
    301                     elsif (($query{$fpa_id}{DATA_STATE}[$valid_index] ne 'full')) {                   
    302                         $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_AVAILABLE;
    303                        
    304                         # updating stacks isn't implemented
    305                         if (($stage eq 'stack')) {
    306                             $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
    307                         }
    308                         # updating old burntool data isn't implemented
    309                         elsif ($stage eq 'chip') {
    310                             if ($query{$fpa_id}{BURNTOOL_STATE}[$valid_index] and
    311                                 (abs($query{$fpa_id}{BURNTOOL_STATE}[$valid_index]) < 14)) {
    312                                 $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
     291                if ($stage eq 'chip') {
     292                    $query{$fpa_id}{BURNTOOL_STATE}[$valid_index] = $this_image_ref->{burntool_state};
     293                }
     294               
     295                # Determine if the data exists.
     296                if (($query{$fpa_id}{STATE}[$valid_index] eq 'goto_purged') or
     297                    ($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'purged') or
     298                    ($query{$fpa_id}{STATE}[$valid_index] eq 'drop') or
     299                    ($query{$fpa_id}{STATE}[$valid_index] eq 'error_cleaned') or
     300                    ($query{$fpa_id}{STATE}[$valid_index] eq 'goto_scrubbed') or
     301                    ($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'scrubbed')) {
     302                   
     303                    # image is gone and it's not coming back
     304                    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_GONE;
     305                }
     306                elsif ($need_magic and ($query{$fpa_id}{MAGICKED}[$valid_index] eq 0)) {
     307                    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_DESTREAKED;
     308                }
     309                elsif (($query{$fpa_id}{DATA_STATE}[$valid_index] ne 'full')) {               
     310                    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_AVAILABLE;
     311                   
     312                    # updating stacks isn't implemented
     313                    if (($stage eq 'stack')) {
     314                        $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
     315                    }
     316                    # updating old burntool data isn't implemented
     317                    elsif ($stage eq 'chip') {
     318                        if ($query{$fpa_id}{BURNTOOL_STATE}[$valid_index] and
     319                            (abs($query{$fpa_id}{BURNTOOL_STATE}[$valid_index]) < 14)) {
     320                            $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
    313321                            }
    314                         }
    315                     } # End determining error faults.
    316                 }
    317             }
    318         }
     322                    }
     323                } # End determining error faults.
     324            }
     325        }
    319326    }
    320327} # End calculating wisdom
     
    322329my %processing_request;
    323330
    324 if (!$job_id) {
    325     open(WISDOM,">$wisdom_file") or my_die("failed to open wisdom file $wisdom_file");
    326     foreach my $fpa_id (keys %query) {
    327         for (my $i = 0; $i <= $#{ $query{$fpa_id}{ROWNUM} }; $i++) {
    328             print WISDOM "$fpa_id\t";
    329             foreach my $key (keys %{ $query{$fpa_id} }) {
    330                 print WISDOM "$key $query{$fpa_id}{$key}[$i]\t";
     331if ($job_id) {
     332    $wisdom_file = "$wisdom_file.$job_id";
     333}
     334open(WISDOM,">$wisdom_file") or my_die("failed to open wisdom file $wisdom_file");
     335foreach my $fpa_id (keys %query) {
     336    for (my $i = 0; $i <= $#{ $query{$fpa_id}{ROWNUM} }; $i++) {
     337        print WISDOM "$fpa_id\t";
     338        foreach my $key (keys %{ $query{$fpa_id} }) {
     339            print WISDOM "$key $query{$fpa_id}{$key}[$i]\t";
     340        }
     341        print WISDOM "\n";
     342        my $data_state = $query{$fpa_id}{DATA_STATE}[$i];
     343        if ($query{$fpa_id}{BAD_COMPONENT}[$i] == 0) {
     344            if ($data_state ne 'full') {
     345               
     346                @{ $update_request{$query{$fpa_id}{IMAGE}[$i]}{$query{$fpa_id}{FAULT}[$i]} } =
     347                    ($query{$fpa_id}{STATE}[$i],$query{$fpa_id}{STAGE}[$i],$query{$fpa_id}{STAGE_ID}[$i],
     348                     $query{$fpa_id}{COMPONENT_ID}[$i],$query{$fpa_id}{NEED_MAGIC}[$i],$query{$fpa_id}{IMAGE_DB}[$i]);
    331349            }
    332             print WISDOM "\n";
    333             my $data_state = $query{$fpa_id}{DATA_STATE}[$i];
    334             if ($query{$fpa_id}{BAD_COMPONENT}[$i] == 0) {
    335                 if ($data_state ne 'full') {
    336                    
    337                     @{ $update_request{$query{$fpa_id}{IMAGE}[$i]}{$query{$fpa_id}{FAULT}[$i]} } =
    338                         ($query{$fpa_id}{STATE}[$i],$query{$fpa_id}{STAGE}[$i],$query{$fpa_id}{STAGE_ID}[$i],
    339                          $query{$fpa_id}{COMPONENT_ID}[$i],$query{$fpa_id}{NEED_MAGIC}[$i],$query{$fpa_id}{IMAGE_DB}[$i]);
    340                 }
    341                 push @{ $processing_request{$fpa_id}{$query{$fpa_id}{IMAGE}[$i]} }, $i;
    342             }
     350            push @{ $processing_request{$fpa_id}{$query{$fpa_id}{IMAGE}[$i]} }, $i;
    343351        }
    344352    }
    345     close(WISDOM);
    346 
     353}
     354close(WISDOM);
     355
     356if (! defined $job_id) {
    347357    # If there is anything that needs to be updated, create the update request list, and then exit the program.
    348358    my $exit_code = 0;
     
    399409        # if (($fault != 0)||($query{$fpa_id}{BAD_COMPONENT}[$index] == 1)) {
    400410        if ($fault = check_component($stage, $stage_id, $component, $imagedb)) {
    401             $query{$fpa_id}{PROC_ERROR}[$index] = $fault;
    402            
    403             $query{$fpa_id}{NPIX}[$index] = 0;
    404             $query{$fpa_id}{QFACTOR}[$index] = 0.0;
    405             $query{$fpa_id}{FLUX}[$index] = 0.0;
    406             $query{$fpa_id}{FLUX_SIG}[$index] = 0.0;
     411            foreach my $i (@{ $processing_request{$fpa_id}{$image} }) {
     412                $query{$fpa_id}{PROC_ERROR}[$i] = $fault;
     413               
     414                $query{$fpa_id}{NPIX}[$i] = 0;
     415                $query{$fpa_id}{QFACTOR}[$i] = 0.0;
     416                $query{$fpa_id}{FLUX}[$i] = 0.0;
     417                $query{$fpa_id}{FLUX_SIG}[$i] = 0.0;
     418            }
    407419
    408420            next;
     
    704716            $inHeader->{FPA_ID}->{value} = $fpa_id;
    705717        }
     718
     719        my @keysa = keys %{$query{$fpa_id}};
     720
     721        print "$fpa_id: @keysa\n";
    706722       
    707723        push @{$colData{'ROWNUM'}}, @{ $query{$fpa_id}{ROWNUM} };
Note: See TracChangeset for help on using the changeset viewer.