Changeset 19923
- Timestamp:
- Oct 6, 2008, 8:54:19 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/sj_ippTests_branch_20080929/ippTests/compIPPphoto.py
r19900 r19923 38 38 39 39 plotcol_tlist = [ 40 ('d_ mag','d_sky','scatter')40 ('d_sky','d_mag','scatter') 41 41 ,('d_x','d_y','scatter') 42 42 ,('sky_ps1','d_mag','scatter') 43 ,('psf_inst_mag','d_mag','scatter') 43 44 ] 44 45 45 def compIPPphoto(summaryTable,mode,plotcol_tlist=plotcol_tlist ):46 def compIPPphoto(summaryTable,mode,plotcol_tlist=plotcol_tlist,skip=False): 46 47 """summaryTable: .fits table for output 47 48 mode: new or append for creating summaryTable new or appending current run's output to it. … … 69 70 rowtuple_list = [] 70 71 71 72 column_hash={} 73 stats_hash={} 72 74 chipfile_l,fpObjc_l = makePlan() 73 75 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) 75 77 stats_hash, column_hash, goodrow_hash = computeStatistics(matchtable) 76 78 # Sort res_hash by its column names to make sure order is … … 80 82 rowtuple_list.append(vallist) 81 83 plotStatsOnefile(column_hash,goodrow_hash,matchtable,plotcol_tlist,bandindex) 84 # return column_hash,goodrow_hash 82 85 newrows = numpy.rec.array(rowtuple_list,names=keylist) 83 86 tabhdu = tabHDUfromRecArray(newrows) … … 247 250 ,'d_skyerr':['skyErr','SKY_SIGMA'] 248 251 ,'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'] 251 256 } 252 257 ismag = re.compile('mag') … … 269 274 PS1col_good = PS1col[bothgood_bool] 270 275 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 300 277 delta = SDSScol_good - PS1col_good 301 278 # Store *all* values in return hash for later plotting; good … … 426 403 return ps1list,sdsslist 427 404 428 def matchSdssPs1(SDSSfpObjc,PS1cmf,xoff=0.5,yoff=0.5,matchrad=0.7 ):405 def matchSdssPs1(SDSSfpObjc,PS1cmf,xoff=0.5,yoff=0.5,matchrad=0.7,skip=False): 429 406 """Call matchByPos to match an SDSS fpObjc.fits and a PS1 bla.cmf 430 407 file.""" … … 448 425 sdssbandstr = ps1copyfields_hash['FILTER'] 449 426 bandindex = filters.index(sdssbandstr) 427 outname = getOutname(SDSSfpObjc,PS1cmf,sdssbandstr) 428 if skip: 429 return outname,sdssbandstr,bandindex 430 450 431 sdsscopyfields_hash = headerfieldHash(['RUN','RERUN','CAMCOL','FIELD'],SDSSfpObjc,0) 451 432 … … 457 438 sdssfilt = 'addcol colc_%s colc[%s]-(float)%s' % (sdssbandstr,bandindex,xoff) 458 439 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) 461 442 # Filtering out objects that can't be primary, i.e. 462 443 # !BRIGHT && (!BLENDED || NODEBLEND || nchild == 0) … … 471 452 ps1pos = "\'x_psf y_psf\'" 472 453 473 outname = getOutname(SDSSfpObjc,PS1cmf,sdssbandstr)474 454 matchByPos(SDSSfpObjc,PS1cmf,outname,sdsspos,ps1pos,tolerance=matchrad,\ 475 455 duptag1='_sdss',duptag2='_ps1',\ … … 573 553 574 554 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) 576 557 sm.histogram(bincenters,histo) 577 558 … … 587 568 try: 588 569 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) 590 571 sm.ltype(ltype) 591 572 sm.connect(x,y,logical) … … 605 586 try: 606 587 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) 608 589 sm.ptype(ptype) 609 590 sm.points(x,y,logical) … … 611 592 pass 612 593 613 def smSetup(x,y, xrange,yrange,xlab,ylab,box1,box2,box3,box4):594 def smSetup(x,y,logical,xrange,yrange,xlab,ylab,box1,box2,box3,box4): 614 595 import sm 615 596 sm.erase() 616 597 if isNone(xrange): 617 xrange = x 598 if isNone(logical): 599 xrange = x 600 else: 601 xrange = x[logical] 618 602 if isNone(yrange): 619 yrange = y 603 if isNone(logical): 604 yrange = y 605 else: 606 yrange = y[logical] 620 607 sm.limits(x,y) 621 608 smBox(box1,box2,box3,box4)
Note:
See TracChangeset
for help on using the changeset viewer.
