Index: trunk/pstamp/scripts/detectability_respond.pl
===================================================================
--- trunk/pstamp/scripts/detectability_respond.pl	(revision 33282)
+++ trunk/pstamp/scripts/detectability_respond.pl	(revision 33283)
@@ -103,7 +103,7 @@
 } # End reading wisdom.
 else {
-#
-# Parse input request file using detect_query_read (as it's already written).
-#
+    #
+    # Parse input request file using detect_query_read (as it's already written).
+    #
     my $dqr_command = "$detect_query_read --dbname $imagedb --input $request_file";
     my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -118,4 +118,6 @@
     {
 	my @column_names = ();
+        # split output into lines skip until the line which lists the column names is found
+        # Parse subsequent lines
 	foreach my $entry (split /\n/, (join "", @$stdout_buf)) {
 	    if ($entry =~ /^#/) {
@@ -123,19 +125,19 @@
 		shift(@column_names);  # Dump the hash sign.
 	    }
-	    else {
+	    elsif (scalar @column_names) {
 		# ROWNUM RA1_DEG DEC1_DEG RA2_DEG DEC2_DEG MAG QUERY_ID FPA_ID MJD-OBS FILTER OBSCODE STAGE
 		my %row_data;
 		@row_data{@column_names} = (split /\s+/, $entry);
 		for (my $i = 0; $i <= $#column_names; $i++) {
-		push @{ $query{$row_data{"FPA_ID"}}{$column_names[$i]} }, $row_data{$column_names[$i]};
-		$Nrows = scalar(keys(%query));
-#		print "$row_data{'FPA_ID'} $Nrows $i $column_names[$i] $row_data{$column_names[$i]}\n";
-	    }
-	    }
-	}
-    }
-#
-# Identify target images.  This should properly collate targets on a single imfile.
-#
+                    push @{ $query{$row_data{"FPA_ID"}}{$column_names[$i]} }, $row_data{$column_names[$i]};
+                    $Nrows = scalar(keys(%query));
+                    # print "$row_data{'FPA_ID'} $Nrows $i $column_names[$i] $row_data{$column_names[$i]}\n";
+                }
+	    }
+	}
+    }
+    #
+    # Identify target images.  This should properly collate targets on a single imfile.
+    #
     foreach my $fpa_id (keys %query) {
 	my %temp_hash;
@@ -207,4 +209,5 @@
 	}
 	elsif ($fpa_id eq 'Not_Set') {
+            # no matching file was found skip
 	    next;
 	}
@@ -222,5 +225,5 @@
 	    $need_magic = 0;
 	}
-	my $mjd_min = $mjd;
+	my $mjd_min = int $mjd;
 	my $mjd_max = $mjd + 1;
 	
@@ -239,82 +242,86 @@
 	
 	foreach my $this_image_ref (@{ $pstamp_images_ref }) {
-	    foreach my $key (sort (keys %{ $this_image_ref } )) {
-		my $value = ${ $this_image_ref }{$key};
-		if ($key eq 'row_index') {
-		    $value = join ' ', @{ $this_image_ref->{$key} };
-		}
-
-#		print "$this_image_ref $key $value\n";
-		foreach my $valid_index (@{ $this_image_ref->{row_index} }) {
-		    $query{$fpa_id}{IMAGE}[$valid_index] = $this_image_ref->{image};
-		    $query{$fpa_id}{MASK}[$valid_index] = $this_image_ref->{mask};
-		    $query{$fpa_id}{WEIGHT}[$valid_index] = $this_image_ref->{weight};
-		    $query{$fpa_id}{PSF}[$valid_index] = $this_image_ref->{psf};
-		    $query{$fpa_id}{STAGE_ID}[$valid_index] = $this_image_ref->{stage_id};
-		    $query{$fpa_id}{IMAGE_DB}[$valid_index] = $this_image_ref->{imagedb};
-		    $query{$fpa_id}{NEED_MAGIC}[$valid_index] = $need_magic;
-		    $query{$fpa_id}{BAD_COMPONENT}[$valid_index] = 0;
-		    
-		    if (exists($this_image_ref->{astrom})) {
-			$query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{astrom};
-		    }
-		    else {
-			$query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{cmf};
-		    }
-		    if (exists($this_image_ref->{class_id})) {
-			$query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{class_id};
-			$query{$fpa_id}{CLASS_ID}[$valid_index] = $this_image_ref->{class_id};
-			
-		    }
-		    else {
-			$query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{skycell_id};
-			$query{$fpa_id}{CLASS_ID}[$valid_index] = 'fpa';
-		    }
-		    
-		    $query{$fpa_id}{STATE}[$valid_index] = $this_image_ref->{state};
-		    if (exists($this_image_ref->{data_state})) {
-			$query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{data_state};
-		    }
-		    else {
-			$query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{state};
-		    }
-		    $query{$fpa_id}{FAULT}[$valid_index] = 0;
+
+            if (0) {
+                foreach my $key (sort (keys %{ $this_image_ref } )) {
+                    my $value = ${ $this_image_ref }{$key};
+                    if ($key eq 'row_index') {
+                        $value = join ' ', @{ $this_image_ref->{$key} };
+                    }
+                    print "$this_image_ref $key $value\n";
+                }
+            }
+
+
+            foreach my $valid_index (@{ $this_image_ref->{row_index} }) {
+                $query{$fpa_id}{IMAGE}[$valid_index] = $this_image_ref->{image};
+                $query{$fpa_id}{MASK}[$valid_index] = $this_image_ref->{mask};
+                $query{$fpa_id}{WEIGHT}[$valid_index] = $this_image_ref->{weight};
+                $query{$fpa_id}{PSF}[$valid_index] = $this_image_ref->{psf};
+                $query{$fpa_id}{STAGE_ID}[$valid_index] = $this_image_ref->{stage_id};
+                $query{$fpa_id}{IMAGE_DB}[$valid_index] = $this_image_ref->{imagedb};
+                $query{$fpa_id}{NEED_MAGIC}[$valid_index] = $need_magic;
+                $query{$fpa_id}{BAD_COMPONENT}[$valid_index] = 0;
+                
+                if (exists($this_image_ref->{astrom})) {
+                    $query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{astrom};
+                }
+                else {
+                    $query{$fpa_id}{CATALOG}[$valid_index] = $this_image_ref->{cmf};
+                }
+                if (exists($this_image_ref->{class_id})) {
+                    $query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{class_id};
+                    $query{$fpa_id}{CLASS_ID}[$valid_index] = $this_image_ref->{class_id};
+                    
+                }
+                else {
+                    $query{$fpa_id}{COMPONENT_ID}[$valid_index] = $this_image_ref->{skycell_id};
+                    $query{$fpa_id}{CLASS_ID}[$valid_index] = 'fpa';
+                }
+                
+                $query{$fpa_id}{STATE}[$valid_index] = $this_image_ref->{state};
+                if (exists($this_image_ref->{data_state})) {
+                    $query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{data_state};
+                }
+                else {
+                    $query{$fpa_id}{DATA_STATE}[$valid_index] = $this_image_ref->{state};
+                }
+                $query{$fpa_id}{FAULT}[$valid_index] = 0;
 		    $query{$fpa_id}{MAGICKED}[$valid_index] = $this_image_ref->{magicked};
-		    if ($stage eq 'chip') {
-			$query{$fpa_id}{BURNTOOL_STATE}[$valid_index] = $this_image_ref->{burntool_state};
-		    }
-		    
-		    # Determine if the data exists.
-		    if (($query{$fpa_id}{STATE}[$valid_index] eq 'goto_purged') or 
-			($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'purged') or
-			($query{$fpa_id}{STATE}[$valid_index] eq 'drop') or 
-			($query{$fpa_id}{STATE}[$valid_index] eq 'error_cleaned') or 
-			($query{$fpa_id}{STATE}[$valid_index] eq 'goto_scrubbed') or 
-			($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'scrubbed')) {
-			
-			# image is gone and it's not coming back
-			$query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_GONE;
-		    }
-		    elsif ($need_magic and ($query{$fpa_id}{MAGICKED}[$valid_index] eq 0)) {
-			$query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_DESTREAKED;
-		    }
-		    elsif (($query{$fpa_id}{DATA_STATE}[$valid_index] ne 'full')) {		      
-			$query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_AVAILABLE;
-			
-			# updating stacks isn't implemented
-			if (($stage eq 'stack')) {
-			    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
-			}
-			# updating old burntool data isn't implemented
-			elsif ($stage eq 'chip') {
-			    if ($query{$fpa_id}{BURNTOOL_STATE}[$valid_index] and 
-				(abs($query{$fpa_id}{BURNTOOL_STATE}[$valid_index]) < 14)) {
-				$query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
+                if ($stage eq 'chip') {
+                    $query{$fpa_id}{BURNTOOL_STATE}[$valid_index] = $this_image_ref->{burntool_state};
+                }
+                
+                # Determine if the data exists.
+                if (($query{$fpa_id}{STATE}[$valid_index] eq 'goto_purged') or 
+                    ($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'purged') or
+                    ($query{$fpa_id}{STATE}[$valid_index] eq 'drop') or 
+                    ($query{$fpa_id}{STATE}[$valid_index] eq 'error_cleaned') or 
+                    ($query{$fpa_id}{STATE}[$valid_index] eq 'goto_scrubbed') or 
+                    ($query{$fpa_id}{DATA_STATE}[$valid_index] eq 'scrubbed')) {
+                    
+                    # image is gone and it's not coming back
+                    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_GONE;
+                }
+                elsif ($need_magic and ($query{$fpa_id}{MAGICKED}[$valid_index] eq 0)) {
+                    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_DESTREAKED;
+                }
+                elsif (($query{$fpa_id}{DATA_STATE}[$valid_index] ne 'full')) {		      
+                    $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_AVAILABLE;
+                    
+                    # updating stacks isn't implemented
+                    if (($stage eq 'stack')) {
+                        $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
+                    }
+                    # updating old burntool data isn't implemented
+                    elsif ($stage eq 'chip') {
+                        if ($query{$fpa_id}{BURNTOOL_STATE}[$valid_index] and 
+                            (abs($query{$fpa_id}{BURNTOOL_STATE}[$valid_index]) < 14)) {
+                            $query{$fpa_id}{FAULT}[$valid_index] = $PSTAMP_NOT_IMPLEMENTED;
 			    }
-			}
-		    } # End determining error faults.
-		}
-	    }
-	}
+                    }
+                } # End determining error faults.
+            }
+        }
     }
 } # End calculating wisdom
@@ -322,27 +329,30 @@
 my %processing_request;
 
-if (!$job_id) {
-    open(WISDOM,">$wisdom_file") or my_die("failed to open wisdom file $wisdom_file");
-    foreach my $fpa_id (keys %query) {
-        for (my $i = 0; $i <= $#{ $query{$fpa_id}{ROWNUM} }; $i++) {
-            print WISDOM "$fpa_id\t";
-            foreach my $key (keys %{ $query{$fpa_id} }) {
-                print WISDOM "$key $query{$fpa_id}{$key}[$i]\t";
+if ($job_id) {
+    $wisdom_file = "$wisdom_file.$job_id";
+}
+open(WISDOM,">$wisdom_file") or my_die("failed to open wisdom file $wisdom_file");
+foreach my $fpa_id (keys %query) {
+    for (my $i = 0; $i <= $#{ $query{$fpa_id}{ROWNUM} }; $i++) {
+        print WISDOM "$fpa_id\t";
+        foreach my $key (keys %{ $query{$fpa_id} }) {
+            print WISDOM "$key $query{$fpa_id}{$key}[$i]\t";
+        }
+        print WISDOM "\n";
+        my $data_state = $query{$fpa_id}{DATA_STATE}[$i];
+        if ($query{$fpa_id}{BAD_COMPONENT}[$i] == 0) {
+            if ($data_state ne 'full') {
+                
+                @{ $update_request{$query{$fpa_id}{IMAGE}[$i]}{$query{$fpa_id}{FAULT}[$i]} } = 
+                    ($query{$fpa_id}{STATE}[$i],$query{$fpa_id}{STAGE}[$i],$query{$fpa_id}{STAGE_ID}[$i],
+                     $query{$fpa_id}{COMPONENT_ID}[$i],$query{$fpa_id}{NEED_MAGIC}[$i],$query{$fpa_id}{IMAGE_DB}[$i]);
             }
-            print WISDOM "\n";
-            my $data_state = $query{$fpa_id}{DATA_STATE}[$i];
-            if ($query{$fpa_id}{BAD_COMPONENT}[$i] == 0) {
-                if ($data_state ne 'full') {
-                    
-                    @{ $update_request{$query{$fpa_id}{IMAGE}[$i]}{$query{$fpa_id}{FAULT}[$i]} } = 
-                        ($query{$fpa_id}{STATE}[$i],$query{$fpa_id}{STAGE}[$i],$query{$fpa_id}{STAGE_ID}[$i],
-                         $query{$fpa_id}{COMPONENT_ID}[$i],$query{$fpa_id}{NEED_MAGIC}[$i],$query{$fpa_id}{IMAGE_DB}[$i]);
-                }
-                push @{ $processing_request{$fpa_id}{$query{$fpa_id}{IMAGE}[$i]} }, $i;
-            }
+            push @{ $processing_request{$fpa_id}{$query{$fpa_id}{IMAGE}[$i]} }, $i;
         }
     }
-    close(WISDOM);
-
+}
+close(WISDOM);
+
+if (! defined $job_id) {
     # If there is anything that needs to be updated, create the update request list, and then exit the program.
     my $exit_code = 0;
@@ -399,10 +409,12 @@
 	# if (($fault != 0)||($query{$fpa_id}{BAD_COMPONENT}[$index] == 1)) {
 	if ($fault = check_component($stage, $stage_id, $component, $imagedb)) {
-	    $query{$fpa_id}{PROC_ERROR}[$index] = $fault;
-	    
-	    $query{$fpa_id}{NPIX}[$index] = 0;
-	    $query{$fpa_id}{QFACTOR}[$index] = 0.0;
-	    $query{$fpa_id}{FLUX}[$index] = 0.0;
-	    $query{$fpa_id}{FLUX_SIG}[$index] = 0.0;
+            foreach my $i (@{ $processing_request{$fpa_id}{$image} }) {
+                $query{$fpa_id}{PROC_ERROR}[$i] = $fault;
+                
+                $query{$fpa_id}{NPIX}[$i] = 0;
+                $query{$fpa_id}{QFACTOR}[$i] = 0.0;
+                $query{$fpa_id}{FLUX}[$i] = 0.0;
+                $query{$fpa_id}{FLUX_SIG}[$i] = 0.0;
+            }
 
 	    next;
@@ -704,4 +716,8 @@
 	    $inHeader->{FPA_ID}->{value} = $fpa_id;
 	}
+
+        my @keysa = keys %{$query{$fpa_id}};
+
+        print "$fpa_id: @keysa\n";
 	
 	push @{$colData{'ROWNUM'}}, @{ $query{$fpa_id}{ROWNUM} };
