IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 31217


Ignore:
Timestamp:
Apr 6, 2011, 7:00:02 PM (15 years ago)
Author:
watersc1
Message:

Reads and writes wisdom file in metadata format correctly. This is some improvement.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/czw_branch/20110406/pstamp/scripts/detectability_respond.pl

    r31216 r31217  
    3131                       caturi
    3232                       );
     33use PS::IPP::Metadata::Config;
     34use PS::IPP::Metadata::List qw( parse_md_list );
     35
    3336use Astro::FITS::CFITSIO qw( :constants );
    3437Astro::FITS::CFITSIO::PerlyUnpacking(1);
     
    8992my $wisdom_file = "${workdir}/wisdom.dat";
    9093if ((-e $wisdom_file)&&!($ignore_wisdom)) {
     94   
    9195    print "Reading wisdom file $wisdom_file instead of parsing...\n";
    9296    open(WISDOM,"$wisdom_file") or my_die("failed to open wisdom file $wisdom_file");
     
    9599    my $wisdom = <WISDOM>;
    96100    $/ = $terminator;
    97    
    98     # @query_list = parse_md_list( parse($wisdom));
    99     while(<WISDOM>) {
    100         chomp;
    101         my ($fpa_id,@key_values) = split /\s+/;
    102         my $index = $#{ $query{$fpa_id}{ROWNUM} } + 1;
    103         while ($#key_values > -1) {
    104             my $key = shift(@key_values);
    105             my $val = shift(@key_values);
    106             # if we have wisdom, then we should have updated already.  If not, we'll bomb out later in the code.
    107             if ($key eq 'FAULT') {
    108                 $val = 0;
    109             }
    110             $query{$fpa_id}{$key}[$index] = $val;
    111         }
    112     }
    113     close(WISDOM);
     101    close(WISDOM);   
     102
     103    my $mdcParser = PS::IPP::Metadata::Config->new;
     104
     105    my $queryData = $mdcParser->parse( $wisdom );
     106    foreach my $entry (@{ $queryData }) {
     107        if (@{ $entry }{name} eq 'DETECTABILITY_WISDOM') {
     108            my $fpa_id = "NO_ID";
     109            my @entryData = @{ ${ $entry }{value} };
     110            foreach my $dentry (@entryData) {
     111                if (${ $dentry }{name} eq 'FPA_ID') {
     112                    $fpa_id = ${ $dentry }{value};
     113                    push @{ $query{$fpa_id}{${ $dentry }{name}} }, ${ $dentry }{value};
     114                }
     115                else {
     116#                   print "$entry ${ $dentry }{name} $fpa_id ${ $dentry }{value}\n";
     117                    push @{ $query{$fpa_id}{${ $dentry }{name}} }, ${ $dentry }{value};
     118                }
     119            }
     120        }
     121    }
     122
    114123} # End reading wisdom.
    115124else {
     
    330339my %processing_request;
    331340
     341my @keylist = ('IMAGE_DB','QUERY_ID','FPA_ID','MJD-OBS','FILTER','OBSCODE','STAGE',
     342               'ROWNUM','RA1_DEG','DEC1_DEG','RA2_DEG','DEC2_DEG','MAG',
     343               'STAGE_ID','COMPONENT_ID','CLASS_ID','STATE','DATA_STATE','BURNTOOL_STATE','FAULT',
     344               'MAGICKED','NEED_MAGIC','BAD_COMPONENT',
     345               'IMAGE','MASK','WEIGHT','CATALOG','PSF');
     346               
     347
    332348open(WISDOM,">$wisdom_file") or my_die("failed to open wisdom file $wisdom_file");
    333349print WISDOM "DETECTABILITY_WISDOM MULTI\n\n";
    334 foreach my $fpa_id (sort {$query{$a}{ROWNUM} <=> $query{$a}{ROWNUM} } (keys %query)) {
     350foreach my $fpa_id (sort {$query{$a}{ROWNUM}[0] <=> $query{$b}{ROWNUM}[0] } (keys %query)) {
    335351    for (my $i = 0; $i <= $#{ $query{$fpa_id}{ROWNUM} }; $i++) {
    336352        print WISDOM "DETECTABILITY_WISDOM METADATA\n";
    337353        printf(WISDOM "   %15s  %3s       %s\n","FPA_ID","STR",$fpa_id);
    338         foreach my $key (keys %{ $query{$fpa_id} }) {
     354        foreach my $key (@keylist) {
    339355        printf(WISDOM "   %15s  %3s       %s\n",$key,"STR",$query{$fpa_id}{$key}[$i]);
    340356        }
Note: See TracChangeset for help on using the changeset viewer.