IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 13, 2021, 10:50:28 AM (5 years ago)
Author:
eugene
Message:

code cleanup : try to simplify names of temp and output vectors, method to subset the group

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/eam/teleff/diffmask.pro

    r41712 r41717  
    1010
    1111if (not($?MATCH_RADIUS)) set MATCH_RADIUS = 2.0
     12
     13$SMF_FIELDS_DIF = X_PSF Y_PSF RA_PSF DEC_PSF CAL_PSF_MAG PSF_QF PSF_QF_PERFECT
     14$REF_FIELDS_DIF = Rref Dref Mref
     15$XTR_FIELDS_DIF = Xref Yref Nref Q1ref
    1216
    1317macro get.diff.eff
     
    4448  # load the reference source table
    4549  # how to choose the name of the filter?
    46   data $refsrcs; read -fits DATA Rref Dref Mref
     50  data $refsrcs; read -fits DATA $REF_FIELDS_DIF
    4751  set Nref = ramp(Rref)
    4852  if ($VERBOSE) echo "loaded Rref[] sources from reference $refsrcs"
     
    5862    if ("$diffMask:$i" == "")
    5963      echo "no mask file found for $i, skipping maskstats"
    60       set Q1refSS = zero(XrefSS) + NAN
     64      set Q1ref_onchp = zero(Xref_onchp) + NAN
    6165    else
    6266      get.diff.mask.stats $diffMask:$i
    6367    end
    6468
    65     sprintf output "%s/%s.%s.%s.diff.stf" $OUTDIR $expname $skycell:$i $OUTVERSION
    66     write -fits DATA $output RrefSS DrefSS MrefSS XrefSS YrefSS Q1refSS X_PSF_found Y_PSF_found M_PSF_found Q1_PSF_found Q2_PSF_found
    67   end
     69   foreach field SMF_FIELDS_DIF
     70     concat $field\_found $field\_out
     71     delete $field\_found
     72   end
     73   foreach field REF_FIELDS_DIF $XTR_FIELDS_DIF
     74     concat $field\_onchp $field\_out
     75     delete $field\_onchp
     76   end
     77  end
     78
     79  $OUT_FIELDS =
     80  foreach field $SMP_FIELDS_DIF $REF_FIELDS_DIF $XTR_FIELDS_DIF
     81    $OUT_FIELDS = $OUT_FIELDS $field\_out
     82  end
     83
     84  sprintf output "%s/%s.%s.diff.stf" $OUTDIR $expname $OUTVERSION
     85  write -fits DATA $output $OUT_FIELDS
    6886end
    6987
     
    7896  end
    7997
    80   local filename
     98  local filename NAXIS1 NAXIS2
    8199  $filename = $1
    82100  if ("$filename" == "")
     
    100118  # do we need to grow the range at all?
    101119  set keep = (Rref >= $minR) && (Rref <= $maxR) && (Dref >= $minD) && (Dref <= $maxD)
    102   subset RrefS = Rref if keep
    103   subset DrefS = Dref if keep
    104   subset MrefS = Mref if keep
     120  foreach field $REF_FIELDS_DIF Nref
     121    subset $field\_tmp = $field if keep
     122  end
    105123
    106124  # convert the subset coordinates to pixels
    107   set XrefS = RrefS
    108   set YrefS = DrefS
    109   coords -q hdr -c XrefS YrefS
     125  set Xref_tmp = Rref_tmp
     126  set Yref_tmp = Dref_tmp
     127  coords -q hdr -c Xref_tmp Yref_tmp
    110128
    111129  # generate a subset of sources which are within the boundaries of the skycell
    112130  set keep = (XrefS >= 0) && (XrefS <= $NAXIS1) && (YrefS >= 0) && (YrefS <= $NAXIS2)
    113   subset XrefSS = XrefS if keep
    114   subset YrefSS = YrefS if keep
    115   subset RrefSS = RrefS if keep
    116   subset DrefSS = DrefS if keep
    117   subset MrefSS = MrefS if keep
     131  foreach field $REF_FIELDS_DIF Nref Xref Yref
     132    subset $field\_onchp = $field\_tmp if keep
     133    delete $field\_tmp
     134  end
    118135
    119136  # now read the smf detections
    120137  data $filename
    121   read -fits SkyChip.psf X_PSF Y_PSF RA_PSF DEC_PSF CAL_PSF_MAG PSF_QF PSF_QF_PERFECT
    122 
    123   match2d XrefSS YrefSS X_PSF Y_PSF $MATCH_RADIUS -closest
    124 
    125   reindex X_PSF_found = X_PSF using index1 -keep-unmatched
    126   reindex Y_PSF_found = Y_PSF using index1 -keep-unmatched
    127   reindex M_PSF_found = CAL_PSF_MAG using index1 -keep-unmatched
    128   reindex Q1_PSF_found = PSF_QF using index1 -keep-unmatched
    129   reindex Q2_PSF_found = PSF_QF_PERFECT using index1 -keep-unmatched
    130 
    131   set dX = XrefSS - X_PSF_found; subset dXs = dX where (MrefSS < 18); vstat -q dXs
    132   set dY = YrefSS - Y_PSF_found; subset dYs = dY where (MrefSS < 18); vstat -q dYs
    133   set dM = MrefSS - M_PSF_found; subset dMs = dM where (MrefSS < 18); vstat -q dMs
    134 
    135   # measure some stats, eg:
    136   # * fraction detected vs mag, filter by PSF_QF, PSF_QF_PERFECT
     138  read -fits SkyChip.psf $SMF_FIELDS_DIF
     139
     140  match2d Xref_onchp Yref_onchp X_PSF Y_PSF $MATCH_RADIUS -closest
     141  foreach field $SMF_FIELDS_DIF
     142    reindex $field\_found = $field using index1 -keep-unmatched
     143  end
    137144end
    138145
     
    160167  # I want to set an image based on the bit values but I fear
    161168  # the mask has been converted to a float when read
    162   forcedphot mkPerfect XrefSS YrefSS -output Q1refSS
    163 
    164   subset tmp = Q1refSS where (Q1refSS > 0.85)
    165 
    166   if ($VERBOSE) echo tmp[] of Q1refSS[] are unmasked
    167 end
    168 
    169 macro get.diff.detect.coords
    170   if ($0 != 2)
    171    echo "USAGE: get.diff.detect.coords (buffer)"
    172    echo "  assumes existence of vectors (Rref, Dref, Mref) and buffer (PHU)"
    173    echo "  matches known sources to detections in the smf file extensions for each chip"
    174    echo "  calculates detection fraction as a function of magnitude"
    175    echo "  also astrometric and photometric scatter vs magnitude for good detections"
    176    break
    177   end
    178 
    179   local buffname
    180   $buffname = $1
    181 
    182   keyword $buffname NAXIS1 NAXIS1
    183   keyword $buffname NAXIS2 NAXIS2
    184 
    185   coords -q $buffname -p       0       0; init.radec.range
    186   coords -q $buffname -p $NAXIS1       0; set.radec.range
    187   coords -q $buffname -p $NAXIS1 $NAXIS2; set.radec.range
    188   coords -q $buffname -p       0 $NAXIS2; set.radec.range
    189 
    190   # generate a subset which could be on this chip
    191   # do we need to grow the range at all?
    192   set keep = (Rref >= $minR) && (Rref <= $maxR) && (Dref >= $minD) && (Dref <= $maxD)
    193   subset RrefS = Rref if keep
    194   subset DrefS = Dref if keep
    195   subset MrefS = Mref if keep
    196 
    197   # convert the subset coordinates to pixels
    198   set XrefS = RrefS
    199   set YrefS = DrefS
    200   coords -q $buffname -c XrefS YrefS
    201 
    202   # generate a subset of sources which are within the boundaries of the chip
    203   set keep = (XrefS >= 0) && (XrefS <= $NAXIS1) && (YrefS >= 0) && (YrefS <= $NAXIS2)
    204   subset XrefSS = XrefS if keep
    205   subset YrefSS = YrefS if keep
    206   subset RrefSS = RrefS if keep
    207   subset DrefSS = DrefS if keep
    208   subset MrefSS = MrefS if keep
    209 end
     169  forcedphot mkPerfect Xref_onchp Yref_onchp -output Q1ref_onchp
     170
     171  subset tmp = Q1ref_onchp where (Q1ref_onchp > 0.85)
     172  if ($VERBOSE) echo tmp[] of Q1ref_onchp[] are unmasked
     173end
     174
     175## utilities
    210176
    211177macro init.radec.range
Note: See TracChangeset for help on using the changeset viewer.