def handle(self, fitsInfo): keywords = fitsInfo[0].header flux = fitsInfo[0].data[0] ra = astroUtil.getKeyword(keywords, 'RA') dec = astroUtil.getKeyword(keywords, 'DEC') if ra == 0 or dec == 0: return self.output.write(ra + " " + dec) self.output.write("\n") self.count += 1
def getCatchData(ra, dec, cache): r1 = int(ra / 5) * 5 r2 = r1 + 5 d1 = int(dec / 5) * 5 if dec < 0: if d1 <= 0: d1 -= 5 d2 = d1 + 5 fileName = "ucal_magsqw_r%d-%d_d%d-%d.fits" % (r1, r2, d1, d2) data = getCache(cache, fileName) if data is not None: return data filePath = os.path.join(pastarrDir, fileName) if not os.path.exists(filePath): return None fitsInfo = astroUtil.getFitsInfo(filePath) data = fitsInfo[1].data cacheValue = [] for row in data: mags = row[6] rowValue = [row[0], row[1], mags[0], mags[1], mags[2], mags[3], mags[4]] cacheValue.append(rowValue) addCache(cache, fileName, cacheValue) return cacheValue
def M31RegionSQLGen(): sql_select = "SELECT * FROM dr3.M31_Coordinate" sql_select_vo = "SELECT objID,ra,dec,petroMag_u,petroMag_g,petroMag_r,petroMag_i,petroMag_z FROM BestDR12.dbo.PhotoObjALl WHERE " conn, data = sqlHelper.getFetchMany(sql_select) dic_radec = util.getRaDecMap(data) sql_whereList = [] for ra in dic_radec.keys(): minDec = min(dic_radec[ra]) maxDec = max(dic_radec[ra]) sql_whereList.append(genSQL(ra, minDec, maxDec)) sql_where = util.listToString(sql_whereList, "or") sql_select_vo += sql_where print sql_select_vo
def getDistance(x1, y1, x2, y2): solution = astroUtil.solution if abs(x1 - x2) > solution or abs(y1 - y2) > solution: return 100 distance = astroUtil.getStarDistance(x1, y1, x2, y2) if distance <= solution: return distance else: return 100
def fitsToDatabase(self, strategy): strategy.preHandle() filePaths = util.listDirFiles(strategy.dirPath, ".fits") for filePath in filePaths: try: fitsInfo = astroUtil.getFitsInfo(filePath) strategy.handle(fitsInfo) except Exception, ex: exUtil.printTagMessage(ex, "Fits handle error", filePath)
def modelMatch(targetFitsPath, templateDir, waveRange=np.arange(4000, 7600, 1), isSave=True): keywords, flux = astroUtil.getFitsHeaderAndFlux(targetFitsPath) wave = astroUtil.calcWaveWithKeywords(keywords) wave, flux = formatWaveAndFlux(wave, flux, waveRange) templatePath, minCoeff, minChi2 = calcMinChi2(flux, templateDir) # print "%s,%s,%s" % (targetFitsPath, templatePath, minChi2) if isSave: if templatePath == "": return templateData = np.loadtxt(templatePath) wave_template, flux_template = formatWaveAndFlux(templateData[:, 0], templateData[:, 1], waveRange) plt.plot(wave, flux, 'b') plt.plot(wave_template, flux_template * (minCoeff[0] * np.power(wave_template, 2) + minCoeff[1] * wave_template + minCoeff[2]), 'r--') plt.ylabel('flux') plt.xlabel('wavelength') plt.title(templatePath) plt.savefig(targetFitsPath + '.png') plt.close() return templatePath, minChi2
def PanstarrsCrossUpdate(specid, ra, dec, conn, cache): data = getCatchData(ra, dec, cache) if data is None: print "failed [file not exist]:" + specid return False for row in data: ra_panstarrs = row[0] dec_panstarrs = row[1] if astroUtil.checkDuplicate(ra, dec, ra_panstarrs, dec_panstarrs): # mags = row[6] # values = [mags[0], mags[1], mags[2], mags[3], mags[4], specid] values = [row[2], row[3], row[4], row[5], row[6], specid] sqlHelper.execWithValues(conn, sql_update, values) print "succeed :" + specid return True print "failed :" + specid return False
def importLamostData(sql_select, sql_insert): conn = sqlHelper.getMySQLConn() conn45 = sqlHelper.getMySQL45Conn() count = 0 data = sqlHelper.getFetchManyByConn(conn45, sql_select) for info in data: sqlRecord = [] colIndex = 1 try: for col in info: if colIndex == 13: classType = info[10] subClass = info[11] mainClass = astroUtil.getMainClass(classType, subClass) sqlRecord.append(mainClass) sqlRecord.append(col) colIndex += 1 sqlHelper.execWithValues(conn, sql_insert, sqlRecord) count += 1 except Exception, ex: exUtil.printMessage(ex, "Migration")
def getCoordinateDic(tableName): sql_select = "SELECT * FROM " + tableName data = sqlHelper.getFetchAll(sql_select) return astroUtil.getCoordinateCountMap(data)
# -*- coding:utf-8 -*- import Astronomy.Util.CommonUtil as astroUtil import os # waveLens = [1184,1452,2023,2480,3262] waveLens = [1188, 2023, 2217, 2356, 2491, 3613, 3262, 3635, 3696] scale = 15 fitsPath = '/media/zdwdong/my/fits/test/spec-56609-HD004201N404117V01_sp04-217.fits' # files = os.listdir(os.path.join(dr2Dir, subDir)) # for fileName in files: # LamostFuns.imageExtract(dr2Dir, subDir, fileName, waveLens, waveType, False) astroUtil.imageExtract(fitsPath, waveLens, True)
def handle(self, fitsInfo): keywords = fitsInfo[0].header classType = astroUtil.getKeyword(keywords, "CLASS", "1D_CLASS") if classType == "SKY": return ra = astroUtil.getKeyword(keywords, 'RA') dec = astroUtil.getKeyword(keywords, 'DEC') subClass = astroUtil.getKeyword(keywords, "SUBCLASS", "1D_SUBCL") mainClass = astroUtil.getMainClass(classType, subClass) date = astroUtil.getKeyword(keywords, "DATE-OBS")[0:10] planID = astroUtil.getKeyword(keywords, "PLANID") z = astroUtil.getKeyword(keywords, "Z", "1D_Z") z_err = astroUtil.getKeyword(keywords, "1D_Z_ERR", "Z_ERR") version_idl = astroUtil.getKeyword(keywords, "VERSIDL") version_ppl = astroUtil.getKeyword(keywords, "VERS2D", "VERSPIPE") SN_U = astroUtil.getKeyword(keywords, "SN_U") SN_G = astroUtil.getKeyword(keywords, "SN_G") SN_R = astroUtil.getKeyword(keywords, "SN_R") SN_I = astroUtil.getKeyword(keywords, "SN_I") SN_Z = astroUtil.getKeyword(keywords, "SN_Z") sqlRecord = [planID, version_idl, version_ppl, date, ra, dec, classType, mainClass, subClass, z, z_err, SN_U, SN_G, SN_R, SN_I, SN_Z] sqlHelper.execWithValues(self.conn, self.sql_insert, sqlRecord) self.count += 1
import numpy as np import CodeLib.Util.CommonUtil as util import Astronomy.Util.CommonUtil as astroUtil from CodeLib.Util import MathUtil inputFile = "data_v4.txt" data = util.loadTxtData(inputFile) m, n = data.shape testCount = int(m * 0.2) testData = data[0:testCount, :] trainData = data[testCount:m, :] subClassData, subClassCount = astroUtil.formatClassifyData(trainData) classMeanVar = {} for key in subClassData.keys(): classMeanVar[key] = [] for i in range(len(subClassData[key])): if i < 3: mean, var, num = MathUtil.calcMeanVarCount(subClassData[key][i]) classMeanVar[key].append([mean, var, num]) else: classMeanVar[key].append(np.sum(subClassData[key][i])) def testData(data): m, n = data.shape tags = data[:, n - 1] errorCount = 0
classCount = {"O": 0, "B": 0, "A": 0, "F": 0, "G": 0, "K": 0, "M": 0, "N": 0} inputPath = "C:\dr2" outFile = "data.txt" outFilePath = util.getRelativePath(outFile) output = open(outFilePath, "w") dirs = os.listdir(inputPath) count = 0 for dir in dirs: files = os.listdir(os.path.join(inputPath, dir)) for fileName in files: filePath = os.path.join(inputPath, dir, fileName) try: keywords, flux = astroUtil.getFitsHeaderAndFlux(filePath) record = [] for fea in features: record.append(keywords[fea]) for wl in waveLens: record.append(astroUtil.checkLine(flux, wl)) subClass = keywords[subClassKey][0:1] subClassTag = classMap[subClass] classCount[subClass] += 1 record.append(subClassTag) output.write(util.listToString(record)) output.write("\n") count += 1