Example #1
0
	info = K2.get_K2_info(int(target),poly_fit_deg = 8)
	if info['error'] == 'None':
		star = []

		star_data_tess = get_data(target,tess_data)
		if star_data_tess != ['nan']*3:
			star = [target] + star_data_tess
		else:
			star = [target] + get_data(target,faint_data)

		star_qual = [target]
		data_by_segs = info['subtraction_by_segments']
		for seg in data_by_segs:
			t0 = seg[0][0]*1440
			t1 = seg[0][-1]*1440
			num_i = (t1-t0)/KEPLER_CADENCE
			if len(seg[0]) < .5*num_i:
				star_qual.append('BAD')
				star.append('nan')
			else:
				star_qual.append('GOOD')
				sigma = np.std(seg[1])
				star.append(sigma)
			star_qual.append(len(seg[0])/float(num_i))	
		result.append(star)
		quality.append(star_qual)
	else:
		errors.append(target)
datalib.write_dat(result,'evaluation.csv',',')
datalib.write_dat(errors,'bad_data.csv','')
datalib.write_dat(quality,'quality.csv',',')
Example #2
0
    info = K2.get_K2_info(int(target), poly_fit_deg=8)
    if info['error'] == 'None':
        star = []

        star_data_tess = get_data(target, tess_data)
        if star_data_tess != ['nan'] * 3:
            star = [target] + star_data_tess
        else:
            star = [target] + get_data(target, faint_data)

        star_qual = [target]
        data_by_segs = info['subtraction_by_segments']
        for seg in data_by_segs:
            t0 = seg[0][0] * 1440
            t1 = seg[0][-1] * 1440
            num_i = (t1 - t0) / KEPLER_CADENCE
            if len(seg[0]) < .5 * num_i:
                star_qual.append('BAD')
                star.append('nan')
            else:
                star_qual.append('GOOD')
                sigma = np.std(seg[1])
                star.append(sigma)
            star_qual.append(len(seg[0]) / float(num_i))
        result.append(star)
        quality.append(star_qual)
    else:
        errors.append(target)
datalib.write_dat(result, 'evaluation.csv', ',')
datalib.write_dat(errors, 'bad_data.csv', '')
datalib.write_dat(quality, 'quality.csv', ',')
Example #3
0
def evaluate(folder_name):
	#ignores NumPy warnings
	warnings.simplefilter('ignore', np.RankWarning)

	#loads K2 tess and K2 faint catalogs
	tess_data = dl.read_dat('k2tess.csv',',')
	del tess_data[0]
	tess_data_ids = dl.get_column(tess_data,0)
	tess_data_is_dwarf = dl.get_column(tess_data,1)
	tess_data_teff = dl.get_column(tess_data,2)
	tess_data_mag = dl.get_column(tess_data,3)

	faint_data = dl.read_dat('k2faint.csv',',')
	del faint_data[0]
	faint_data_ids = dl.get_column(faint_data,0)
	faint_data_is_dwarf = dl.get_column(faint_data,1)
	faint_data_teff = dl.get_column(faint_data,2)
	faint_data_mag = dl.get_column(faint_data,3)

	output = [] #2d array that will be stored in a .csv file. [[id,is_dwarf,teff,mag,sigma1,sigma2...],[id,is_dwarf,teff,mag,sigma1,sigma2...]...]
	not_on_catalog = [] #list of the stars that could not be found in the tess and faint catalogs

	dirlist = os.listdir(folder_name)

	for n in range(0,len(dirlist)):
		fname = dirlist[n]
		data = dl.read_dat(folder_name + '/' + fname,',') #2d array containing the light curve. [[time,flux,segment],[time,flux,segment],...]

		#Searching on K2 catalogs for info
		star_id = ''
		is_dwarf = ''
		teff = 0
		mag = 0
		for i in range(0,len(tess_data_ids)):
			if str(tess_data_ids[i]).replace('.0','') in fname:
				star_id = tess_data_ids[i]
				is_dwarf = tess_data_is_dwarf[i]
				teff = tess_data_teff[i]
				mag = tess_data_mag[i]
				break
				del tess_data_ids[i],tess_data_mag[i],tess_data_teff[i],tess_data_is_dwarf[i]

		if star_id == '': #if it was not found in the tess catalog, it searches the faint catalog
			for i in range(0,len(faint_data_ids)):
				if str(faint_data_ids[i]).replace('.0','') in fname:
					star_id = faint_data_ids[i]
					is_dwarf = faint_data_is_dwarf[i]
					teff = faint_data_teff[i]
					mag = faint_data_mag[i]
					break
					del faint_data_ids[i],faint_data_mag[i],faint_data_teff[i],faint_data_is_dwarf[i]

		print star_id + ' : ' + str((n*100.0/len(dirlist))) + '%' #To know how much is already done

		if star_id != '' and len(data) > 1: #The code only runs if the star is on the catalog and there is data on the lightcurve
			#
			#Computes standard deviations for each segment:
			#
			time = []
			flux = []
			segment = []
			for row in data:
				time.append(float(row[0]))
				flux.append(float(row[1]))
				segment.append(row[2])

			#Deletes >3sigma points and nan segments
			sigma = np.std(flux)
			avg = np.average(flux)
			i = 0
			end = len(time)
			while i in range(0,end):
				if abs(flux[i]-avg) > 3*sigma or str(segment[i]) == 'nan':
					del time[i],flux[i],segment[i]
				end = len(time)
				i+=1

			#Splits into segments
			n = 0 #Number of segments
			for i in range(1,len(segment)):
				if str(segment[-i]) != 'nan':
					n = int(float(segment[-i]))+1
					break

			time_seg = []
			flux_seg = []
			for i in range(0,n):
				time_seg.append([])
				flux_seg.append([])
			for i in range(0,len(time)):
				if segment[i] != 'nan':
					time_seg[int(float(segment[i]))].append(time[i])
					flux_seg[int(float(segment[i]))].append(flux[i])

			#Subtracts the polynomial fit (4 deg) in each segment and computes the standard deviation
			sigmas = []
			for i in range(0,len(time_seg)):
				if time_seg[i] != [] and len(time_seg[i]) > .5*(time_seg[i][0]-time_seg[i][-1])/KEPLER_CADENCE: #This conditional checks if there is data in the segment and also that the segment have more than the 50% of the expected points
					poly = np.poly1d(np.polyfit(time_seg[i],flux_seg[i],4))
					for j in range(0,len(time_seg[i])):
						flux_seg[i][j] -= poly(time_seg[i][j])
					sigmas.append(np.std(flux_seg[i]))
				else:
					sigmas.append('nan')
			output.append([star_id,is_dwarf,teff,mag]+sigmas)
		else:
			not_on_catalog.append(fname)
	print not_on_catalog 
	dl.write_dat(output,'evaluations/evaluation_of_' + folder_name + '.csv',',')