def main(): wantPlot = True zoom = False ra_deg = 98.15766666666666 dec_deg = 21.594944444444444 scRoll_deg = 157.6053108 fovRoll_deg = fov.getFovAngleFromSpacecraftRoll(scRoll_deg) k = fov.KeplerFov(ra_deg, dec_deg, fovRoll_deg) #Position of example star, WASP-67 ra_deg, dec_deg = 103.67845833333334, 24.245555555555555 #Get coordinates of channel corners. raDec = k.getCoordsOfChannelCorners() #Is a given ra/dec on silicon? try: ch = k.pickAChannel(ra_deg, dec_deg) print "Star is on channel %i Mod-out %s" %(ch, fov.modOutFromChannel(ch)) except ValueError: print "Star is not on silicon" print "Caution: Stars within 5 pix of channel edges are not found by this algorithm" ch, col, row = k.getChannelColRow(ra_deg, dec_deg) print "Star is on channel %i Col %.1f Row %.1f" %(ch, col, row) if wantPlot: mp.clf() #ph is a projection class, in this case HammerAitoff. Pass this #class to all FOV plotting commands so it knows how to do the #plotting. ph also implements matplotlib's plot, scatter and text #commands #ph = proj.HammerAitoff(0,0) ph = proj.Cylindrical() ph.plotGrid() k.plotPointing(ph) #scenery.plotEcliptic(ph) plotWithLabel(ph, ra_deg, dec_deg, "HD 50554") if zoom: mp.axis([.88, 1.36, -0.60, -0.20]) k.plotChIds(ph, modout=True) mp.show()
def main(): wantPlot = True zoom = False ra_deg = 98.15766666666666 dec_deg = 21.594944444444444 scRoll_deg = 157.6053108 fovRoll_deg = fov.getFovAngleFromSpacecraftRoll(scRoll_deg) k = fov.KeplerFov(ra_deg, dec_deg, fovRoll_deg) #Position of example star, WASP-67 ra_deg, dec_deg = 103.67845833333334, 24.245555555555555 #Get coordinates of channel corners. raDec = k.getCoordsOfChannelCorners() #Is a given ra/dec on silicon? try: ch = k.pickAChannel(ra_deg, dec_deg) print "Star is on channel %i Mod-out %s" % (ch, fov.modOutFromChannel(ch)) except ValueError: print "Star is not on silicon" print "Caution: Stars within 5 pix of channel edges are not found by this algorithm" ch, col, row = k.getChannelColRow(ra_deg, dec_deg) print "Star is on channel %i Col %.1f Row %.1f" % (ch, col, row) if wantPlot: mp.clf() #ph is a projection class, in this case HammerAitoff. Pass this #class to all FOV plotting commands so it knows how to do the #plotting. ph also implements matplotlib's plot, scatter and text #commands #ph = proj.HammerAitoff(0,0) ph = proj.Cylindrical() ph.plotGrid() k.plotPointing(ph) #scenery.plotEcliptic(ph) plotWithLabel(ph, ra_deg, dec_deg, "HD 50554") if zoom: mp.axis([.88, 1.36, -0.60, -0.20]) k.plotChIds(ph, modout=True) mp.show()
def K2onSilicon(infile,fieldnum,epicfile): ra_sources_deg, dec_sources_deg, mag = parse_file(infile) if np.shape(ra_sources_deg)[0] > 500: print('There are {} sources in your target list, this could take some time'.format(np.shape(ra_sources_deg)[0])) ra_deg, dec_deg, scRoll_deg = getRaDecRollFromFieldnum(fieldnum) ## convert from SC roll to FOV coordinates ## do not use the fovRoll coords anywhere else ## they are internal to this script only fovRoll_deg = fov.getFovAngleFromSpacecraftRoll(scRoll_deg) ## initialize class k = fov.KeplerFov(ra_deg, dec_deg, fovRoll_deg) raDec = k.getCoordsOfChannelCorners() onSilicon = map(onSiliconCheck, ra_sources_deg,dec_sources_deg,np.repeat(k,len(ra_sources_deg))) nearSilicon = map(nearSiliconCheck, ra_sources_deg,dec_sources_deg,np.repeat(k,len(ra_sources_deg))) onSilicon = np.array(onSilicon,dtype=bool) nearSilicon = np.array(nearSilicon, dtype=bool) #hack by DH to overplot EPIC catalog ra=np.zeros(100000) dec=np.zeros(100000) f = open(epicfile, 'r') n=0 n2=0 # only take every 100th EPIC source to speed things up for line in f: if (n % 100 != 0): n=n+1 continue line = line.strip() columns = line.split("|") ra[n2]=columns[9] dec[n2]=columns[10] n=n+1 n2=n2+1 use=np.where(ra > 0)[0] print(n) print(np.size(use)) ra=ra[use] dec=dec[use] if got_mpl: almost_black = '#262626' light_grey = np.array([float(248)/float(255)]*3) #ph = proj.Gnomic(ra_deg, dec_deg) ph = proj.PlateCaree() k.plotPointing(ph,showOuts=False,plot_degrees=False) targets = ph.skyToPix(ra_sources_deg, dec_sources_deg) targets = np.array(targets ) #* 180 / np.pi fig = plt.gcf() ax = fig.gca() ax = fig.add_subplot(111) #hack by DH to overplot EPIC catalog ax.scatter(ra,dec,s=1) ax.scatter(*targets,s=2,label='not on silicon') ax.scatter(targets[0][nearSilicon], targets[1][nearSilicon],color='#fc8d62',s=8,label='near silicon') ax.scatter(targets[0][onSilicon], targets[1][onSilicon],color='#66c2a5',s=8,label='on silicon') ax.set_xlabel('R.A. [degrees]',fontsize=16) ax.set_ylabel('Declination [degrees]',fontsize=16) ax.invert_xaxis() ax.minorticks_on() legend = ax.legend(loc=0, frameon=True, scatterpoints=1) rect = legend.get_frame() rect.set_alpha(0.3) rect.set_facecolor(light_grey) rect.set_linewidth(0.0) texts = legend.texts for t in texts: t.set_color(almost_black) fig.savefig('targets_fov.png',dpi=300) plt.close('all') siliconFlag = np.zeros_like(ra_sources_deg) siliconFlag = np.where(nearSilicon,1,siliconFlag) siliconFlag = np.where(onSilicon,2,siliconFlag) outarr = np.array([ra_sources_deg, dec_sources_deg, mag, siliconFlag]) np.savetxt('targets_siliconFlag.csv', outarr.T, delimiter=', ', fmt=['%10.10f','%10.10f','%10.2f','%i']) if got_mpl: print('I made two files: targets_siliconFlag.csv and targets_fov.png') else: print('I made one file: targets_siliconFlag.csv')
def K2onSilicon(infile, fieldnum, epicfile): ra_sources_deg, dec_sources_deg, mag = parse_file(infile) if np.shape(ra_sources_deg)[0] > 500: print( 'There are {} sources in your target list, this could take some time' .format(np.shape(ra_sources_deg)[0])) ra_deg, dec_deg, scRoll_deg = getRaDecRollFromFieldnum(fieldnum) ## convert from SC roll to FOV coordinates ## do not use the fovRoll coords anywhere else ## they are internal to this script only fovRoll_deg = fov.getFovAngleFromSpacecraftRoll(scRoll_deg) ## initialize class k = fov.KeplerFov(ra_deg, dec_deg, fovRoll_deg) raDec = k.getCoordsOfChannelCorners() onSilicon = map(onSiliconCheck, ra_sources_deg, dec_sources_deg, np.repeat(k, len(ra_sources_deg))) nearSilicon = map(nearSiliconCheck, ra_sources_deg, dec_sources_deg, np.repeat(k, len(ra_sources_deg))) onSilicon = np.array(onSilicon, dtype=bool) nearSilicon = np.array(nearSilicon, dtype=bool) #hack by DH to overplot EPIC catalog ra = np.zeros(100000) dec = np.zeros(100000) f = open(epicfile, 'r') n = 0 n2 = 0 # only take every 100th EPIC source to speed things up for line in f: if (n % 100 != 0): n = n + 1 continue line = line.strip() columns = line.split("|") ra[n2] = columns[9] dec[n2] = columns[10] n = n + 1 n2 = n2 + 1 use = np.where(ra > 0)[0] print(n) print(np.size(use)) ra = ra[use] dec = dec[use] if got_mpl: almost_black = '#262626' light_grey = np.array([float(248) / float(255)] * 3) #ph = proj.Gnomic(ra_deg, dec_deg) ph = proj.PlateCaree() k.plotPointing(ph, showOuts=False, plot_degrees=False) targets = ph.skyToPix(ra_sources_deg, dec_sources_deg) targets = np.array(targets) #* 180 / np.pi fig = plt.gcf() ax = fig.gca() ax = fig.add_subplot(111) #hack by DH to overplot EPIC catalog ax.scatter(ra, dec, s=1) ax.scatter(*targets, s=2, label='not on silicon') ax.scatter(targets[0][nearSilicon], targets[1][nearSilicon], color='#fc8d62', s=8, label='near silicon') ax.scatter(targets[0][onSilicon], targets[1][onSilicon], color='#66c2a5', s=8, label='on silicon') ax.set_xlabel('R.A. [degrees]', fontsize=16) ax.set_ylabel('Declination [degrees]', fontsize=16) ax.invert_xaxis() ax.minorticks_on() legend = ax.legend(loc=0, frameon=True, scatterpoints=1) rect = legend.get_frame() rect.set_alpha(0.3) rect.set_facecolor(light_grey) rect.set_linewidth(0.0) texts = legend.texts for t in texts: t.set_color(almost_black) fig.savefig('targets_fov.png', dpi=300) plt.close('all') siliconFlag = np.zeros_like(ra_sources_deg) siliconFlag = np.where(nearSilicon, 1, siliconFlag) siliconFlag = np.where(onSilicon, 2, siliconFlag) outarr = np.array([ra_sources_deg, dec_sources_deg, mag, siliconFlag]) np.savetxt('targets_siliconFlag.csv', outarr.T, delimiter=', ', fmt=['%10.10f', '%10.10f', '%10.2f', '%i']) if got_mpl: print('I made two files: targets_siliconFlag.csv and targets_fov.png') else: print('I made one file: targets_siliconFlag.csv')