Index: trunk/ippScripts/scripts/ds9_cmf_regions.pl
===================================================================
--- trunk/ippScripts/scripts/ds9_cmf_regions.pl	(revision 24260)
+++ trunk/ippScripts/scripts/ds9_cmf_regions.pl	(revision 24341)
@@ -23,4 +23,5 @@
      $flag_colour,              # Flagged source region colour
      $flag,                     # Flags
+     $mag_radius,               # Magnitude scaling for radius?
      $radius,                   # Radius for circle
      $save_temps
@@ -46,4 +47,5 @@
            'flag-colour=s' => \$flag_colour,
            'flag=o' => \$flag,
+    'mag-radius' => $mag_radius,
            'radius=f' => \$radius,
            'save-temps'        => \$save_temps, # Save temporary files?
@@ -63,18 +65,36 @@
 $fits->get_num_rows($numRows, $status) and check_fitsio($status);
 
-my ($xCol, $yCol, $flagCol);     # Column numbers for x,y, flag
+my ($xCol, $yCol, $flagCol, $magCol); # Column numbers for x,y, flag, mag
 $fits->get_colnum(0, 'X_PSF', $xCol, $status) and check_fitsio($status);
 $fits->get_colnum(0, 'Y_PSF', $yCol, $status) and check_fitsio($status);
 $fits->get_colnum(0, 'FLAGS', $flagCol, $status) and check_fitsio($status);
+$fits->get_colnum(0, 'PSF_INST_MAG', $magCol, $status) and check_fitsio($status);
 
-my ($x, $y, $flags);            # Coordinates and flags read from table
+my ($x, $y, $flags, $mag);     # Coordinates, flags, magnitude read from table
 $fits->read_col(TFLOAT, $xCol, 1, 1, $numRows, 0, $x, undef, $status) and check_fitsio($status);
 $fits->read_col(TFLOAT, $yCol, 1, 1, $numRows, 0, $y, undef, $status) and check_fitsio($status);
 $fits->read_col(TINT, $flagCol, 1, 1, $numRows, 0, $flags, undef, $status) and check_fitsio($status);
+$fits->read_col(TINT, $magCol, 1, 1, $numRows, 0, $mag, undef, $status) and check_fitsio($status);
 $fits->close_file($status);
+
+my ($mag_min, $mag_max);        # Minimum magnitude
+if ($mag_radius) {
+    foreach my $m (@$mag) {
+        next unless defined $m;
+        unless (defined $mag_min and defined $mag_max) {
+            $mag_min = $m;
+            $mag_max = $m;
+            next;
+        }
+        $mag_min = $m if $m < $mag_min;
+        $mag_max = $m if $m > $mag_max;
+    }
+}
+
 
 my ($coordFile, $coordName) = tempfile( "/tmp/ds9_cmf_regions.XXXX", UNLINK => !$save_temps );
 my $numGood = 0;                # Number of good sources
 my $numBad = 0;                 # Number of bad sources
+my $radius_scale = $radius / ($mag_min - $mag_max + 1.0); # Scaling for radius
 for (my $i = 0; $i < $numRows; $i++) {
     my $col;                    # Colour to use
@@ -86,5 +106,7 @@
         $col = $colour;
     }
-    print $coordFile "image; circle(" . ($$x[$i] + 1) . ',' . ($$y[$i] + 1) . ",$radius) \# color = $col\n";
+    my $r = $radius;            # Radius of circle
+    $r -= ($$mag[$i] - $mag_min) * $radius_scale if defined $mag_radius;
+    print $coordFile "image; circle(" . ($$x[$i] + 1) . ',' . ($$y[$i] + 1) . ",$r) \# color = $col\n";
 }
 close $coordFile;
