Index: trunk/ippScripts/scripts/lap_science.pl
===================================================================
--- trunk/ippScripts/scripts/lap_science.pl	(revision 31511)
+++ trunk/ippScripts/scripts/lap_science.pl	(revision 31515)
@@ -475,15 +475,32 @@
 	}
 	# Do quality checks here
-	if ((($exposure->{chipRun_state} eq 'full')&&($exposure->{chip_bad_quality} / $exposure->{chip_component_count} > 0.05)) ||
-	    (($exposure->{camRun_state} eq 'full')&&($exposure->{cam_bad_quality} / $exposure->{cam_component_count} > 0)) ||
-	    (($exposure->{warpRun_state} eq 'full')&&($exposure->{warp_bad_quality} / $exposure->{warp_component_count} > 0.2)) ||
-	    (($exposure->{diffRun_state} eq 'full')&&($exposure->{diff_bad_quality} / $exposure->{diff_component_count} > 0.5)))  {
-	    printf( "QUALITY: $exposure->{exp_id} has bad quality fractions: chip: %d/%d cam: %d/%d warp: %d/%d diff: %d/%d\n",
-		    $exposure->{chip_bad_quality} , $exposure->{chip_component_count},
-		    $exposure->{cam_bad_quality} , $exposure->{cam_component_count},
-		    $exposure->{warp_bad_quality} , $exposure->{warp_component_count},
+	my $is_bad_quality = 0;
+	if ((defined($exposure->{chipRun_state}))&&($exposure->{chipRun_state} eq 'full')&&
+	    ($exposure->{chip_component_count} > 0)&&($exposure->{chip_bad_quality} / $exposure->{chip_component_count} > 0.05)) {
+	    printf("QUALITY: $exposure->{exp_id} has bad chip quality: %d / %d\n",
+		   $exposure->{chip_bad_quality} , $exposure->{chip_component_count});
+	    $is_bad_quality = 1;
+	}
+	elsif ((defined($exposure->{camRun_state}))&&($exposure->{camRun_state} eq 'full')&&
+	       ($exposure->{cam_bad_quality} / $exposure->{cam_component_count} > 0)) {
+	    printf("QUALITY: $exposure->{exp_id} has bad cam quality: %d / %d\n",
+		   $exposure->{cam_bad_quality} , $exposure->{cam_component_count});
+	    $is_bad_quality = 1;
+	}
+	elsif ((defined($exposure->{warpRun_state}))&&($exposure->{warpRun_state} eq 'full')&&
+	       ($exposure->{warp_bad_quality} / $exposure->{warp_component_count} > 0.2)) {
+	    printf("QUALITY: $exposure->{exp_id} has bad warp quality: %d / %d\n",
+		   $exposure->{warp_bad_quality} , $exposure->{warp_component_count});
+	    $is_bad_quality = 1;
+	}
+	elsif ((defined($exposure->{diffRun_state}))&&($exposure->{diffRun_state} eq 'full')&&
+	       ($exposure->{diff_bad_quality} / $exposure->{diff_component_count} > 0.5)) {
+	    printf("QUALITY: $exposure->{exp_id} has bad diff quality: %d / %d\n",
 		    $exposure->{diff_bad_quality} , $exposure->{diff_component_count});
-
-	    unless ($exposure->{diffRun_state} eq 'full') {
+	    $is_bad_quality = 1;
+	}
+	if ($is_bad_quality) {
+	    unless ((defined($exposure->{diffRun_state}))&&
+		    ($exposure->{diffRun_state} eq 'full')) {
 		$needs_qstack = 1;
 		$needs_something_private = 1;
