Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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")
Ejemplo n.º 9
0
def getCoordinateDic(tableName):
    sql_select = "SELECT * FROM " + tableName
    data = sqlHelper.getFetchAll(sql_select)
    return astroUtil.getCoordinateCountMap(data)
Ejemplo n.º 10
0
# -*- 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)
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
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
Ejemplo n.º 13
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