IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19923


Ignore:
Timestamp:
Oct 6, 2008, 8:54:19 AM (18 years ago)
Author:
Sebastian Jester
Message:

Move computation of SDSS instrumental magnitudes into matching routine from computeStatistics, which is simpler, allows skipping over matching if only re-plotting is desired, and removed a bug in the bookkeeping somewhere in that computation now removed from computeStatistics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/sj_ippTests_branch_20080929/ippTests/compIPPphoto.py

    r19900 r19923  
    3838
    3939plotcol_tlist = [
    40     ('d_mag','d_sky','scatter')
     40    ('d_sky','d_mag','scatter')
    4141    ,('d_x','d_y','scatter')
    4242    ,('sky_ps1','d_mag','scatter')
     43    ,('psf_inst_mag','d_mag','scatter')
    4344    ]
    4445
    45 def compIPPphoto(summaryTable,mode,plotcol_tlist=plotcol_tlist):
     46def compIPPphoto(summaryTable,mode,plotcol_tlist=plotcol_tlist,skip=False):
    4647    """summaryTable: .fits table for output
    4748    mode: new or append for creating summaryTable new or appending current run's output to it.
     
    6970    rowtuple_list = []
    7071
    71    
     72    column_hash={}
     73    stats_hash={}
    7274    chipfile_l,fpObjc_l = makePlan()
    7375    for chipfile,fpObjc in zip(chipfile_l,fpObjc_l):
    74         matchtable,filter_name,bandindex = matchSdssPs1(fpObjc,chipfile)
     76        matchtable,filter_name,bandindex = matchSdssPs1(fpObjc,chipfile,skip=skip)
    7577        stats_hash, column_hash, goodrow_hash = computeStatistics(matchtable)
    7678        # Sort res_hash by its column names to make sure order is
     
    8082        rowtuple_list.append(vallist)
    8183        plotStatsOnefile(column_hash,goodrow_hash,matchtable,plotcol_tlist,bandindex)
     84        # return column_hash,goodrow_hash
    8285    newrows = numpy.rec.array(rowtuple_list,names=keylist)
    8386    tabhdu = tabHDUfromRecArray(newrows)
     
    247250        ,'d_skyerr':['skyErr','SKY_SIGMA']
    248251        ,'d_pointsource':['prob_psf','pointsource_ps1']
    249         ,'d_mag':['psfcounts','PSF_INST_MAG']
    250         ,'d_magerr':['psfcountserr','PSF_INST_MAG_SIG']
     252        # ,'d_mag':['psfcounts','PSF_INST_MAG ']
     253        # ,'d_magerr':['psfcountserr','PSF_INST_MAG_SIG']
     254        ,'d_mag':['psfinstmag_sdss','PSF_INST_MAG']
     255        ,'d_magerr':['psfinstmagerr_sdss','PSF_INST_MAG_SIG']
    251256        }
    252257    ismag = re.compile('mag')
     
    269274        PS1col_good = PS1col[bothgood_bool]
    270275        goodrow_hash[outcol] = bothgood_bool
    271         # Compute SDSS instrumental magnitude if necessary
    272         if PS1colname.lower() == 'psf_inst_mag' and SDSScolname.lower() == 'psfcounts':
    273             # Create column with SDSS instrumental magnitude that can
    274             # be written to table for diagnostic use
    275             sdsspsfinstmag_colname = 'psfinstmag_sdss'
    276             instmag_sdss_arr = -2.5*log10(array(table_data.field(SDSScolname)))
    277             instmag_col = pyfits.Column(name='psfinstmag_sdss',format='5E',array=instmag_sdss_arr)
    278             outcoll.append(instmag_col)
    279             goodrow_hash[sdsspsfinstmag_colname.lower()] = goodrow_hash[SDSScolname.lower()]
    280             # Compute array for internal use
    281             SDSScol_good = -2.5*log10(SDSScol_good)
    282 
    283         if PS1colname.lower() == 'psf_inst_mag_sig' and SDSScolname.lower() == 'psfcountserr':
    284             # Create column with SDSS instrumental magnitude error
    285             # that can be written to table for diagnostic use
    286             sdsspsfinstmagerr_colname = 'psfinstmagerr_sdss'
    287             instmagerr_sdss_arr = array(2.5/log(10.)*table_data.field('psfcountserr')/table_data.field('psfcounts'))
    288             instmagerr_col = pyfits.Column(name=sdsspsfinstmagerr_colname,format='5E',array=instmagerr_sdss_arr)
    289             outcoll.append(instmagerr_col)
    290             goodrow_hash[sdsspsfinstmagerr_colname.lower()] = goodrow_hash['psfcountserr'] & \
    291                 goodrow_hash['psfcounts']
    292             # Compute array for internal use
    293             SDSScounts = array(table_data.field('psfcounts')[:,filterID[filtname]])
    294             all3good_bool = bothgood_bool & goodrow_hash[sdsspsfinstmagerr_colname.lower()]
    295             SDSScol_good = SDSScol[all3good_bool]
    296             PS1col_good = PS1col[all3good_bool]
    297             SDSScounts_good = SDSScounts[all3good_bool]
    298             SDSScol_good = 2.5/log(10.)*SDSScol_good/SDSScounts_good
    299             goodrow_hash[outcol] = all3good_bool
     276        # instmagclip.py was here
    300277        delta = SDSScol_good - PS1col_good
    301278        # Store *all* values in return hash for later plotting; good
     
    426403    return ps1list,sdsslist
    427404
    428 def matchSdssPs1(SDSSfpObjc,PS1cmf,xoff=0.5,yoff=0.5,matchrad=0.7):
     405def matchSdssPs1(SDSSfpObjc,PS1cmf,xoff=0.5,yoff=0.5,matchrad=0.7,skip=False):
    429406    """Call matchByPos to match an SDSS fpObjc.fits and a PS1 bla.cmf
    430407    file."""
     
    448425    sdssbandstr = ps1copyfields_hash['FILTER']
    449426    bandindex = filters.index(sdssbandstr)
     427    outname = getOutname(SDSSfpObjc,PS1cmf,sdssbandstr)
     428    if skip:
     429        return outname,sdssbandstr,bandindex
     430       
    450431    sdsscopyfields_hash = headerfieldHash(['RUN','RERUN','CAMCOL','FIELD'],SDSSfpObjc,0)
    451432
     
    457438    sdssfilt = 'addcol colc_%s colc[%s]-(float)%s' % (sdssbandstr,bandindex,xoff)
    458439    sdssfilt += ';addcol rowc_%s rowc[%s]-(float)%s' % (sdssbandstr,bandindex,yoff)
    459 #        sdssfilt += ';addcol psfinstmag_sdss -2.5*log10(psfcounts)'
    460 #        sdssfilt += ';addcol psfinstmagerr_sdss 2.5/ln(10)*psfcountserr/psfcounts'
     440    sdssfilt += ';addcol psfinstmag_sdss -2.5*log10(psfcounts[%s])' % (bandindex)
     441    sdssfilt += ';addcol psfinstmagerr_sdss 2.5/ln(10)*psfcountserr[%s]/psfcounts[%s]' %(bandindex,bandindex)
    461442    # Filtering out objects that can't be primary, i.e.
    462443    # !BRIGHT && (!BLENDED || NODEBLEND || nchild == 0)
     
    471452    ps1pos = "\'x_psf y_psf\'"
    472453
    473     outname = getOutname(SDSSfpObjc,PS1cmf,sdssbandstr)
    474454    matchByPos(SDSSfpObjc,PS1cmf,outname,sdsspos,ps1pos,tolerance=matchrad,\
    475455                   duptag1='_sdss',duptag2='_ps1',\
     
    573553
    574554    if not append:
    575         smSetup(bincenters,histo,xrange,yrange,xlab,ylab,box1,box2,box3,box4)
     555        logical = None
     556        smSetup(bincenters,histo,logical,xrange,yrange,xlab,ylab,box1,box2,box3,box4)
    576557    sm.histogram(bincenters,histo)
    577558
     
    587568    try:
    588569        if not append:
    589             smSetup(x,y,xrange,yrange,xlab,ylab,box1,box2,box3,box4)
     570            smSetup(x,y,logical,xrange,yrange,xlab,ylab,box1,box2,box3,box4)
    590571        sm.ltype(ltype)
    591572        sm.connect(x,y,logical)
     
    605586    try:
    606587        if not append:
    607             smSetup(x,y,xrange,yrange,xlab,ylab,box1,box2,box3,box4)
     588            smSetup(x,y,logical,xrange,yrange,xlab,ylab,box1,box2,box3,box4)
    608589        sm.ptype(ptype)
    609590        sm.points(x,y,logical)
     
    611592        pass
    612593
    613 def smSetup(x,y,xrange,yrange,xlab,ylab,box1,box2,box3,box4):
     594def smSetup(x,y,logical,xrange,yrange,xlab,ylab,box1,box2,box3,box4):
    614595    import sm
    615596    sm.erase()
    616597    if isNone(xrange):
    617         xrange = x
     598        if isNone(logical):
     599            xrange = x
     600        else:
     601            xrange = x[logical]
    618602    if isNone(yrange):
    619         yrange = y
     603        if isNone(logical):
     604            yrange = y
     605        else:
     606            yrange = y[logical]
    620607    sm.limits(x,y)
    621608    smBox(box1,box2,box3,box4)
Note: See TracChangeset for help on using the changeset viewer.