Beispiel #1
0
def checkDistances(inFileName, angDiamFileName, outFileName):
    hashSearch = csvFree.readCSVFile(
        hashSearchFileName[:hashSearchFileName.rfind('.')] +
        '_with_header.csv')
    hashFound = csvFree.readCSVFile(inFileName)
    angDiams = csvFree.readCSVFile(angDiamFileName)
    csvOut = csvData.CSVData()
    csvOut.header = hashFound.header
    nNotFound = 0
    ra_3238 = hmsToDeg('17:59:45.20')
    dec_3238 = dmsToDeg('-33:21:13.00')
    toDelete = []
    for i in range(hashFound.size()):
        name = hashFound.getData('id', i)
        idPNMain = hashFound.getData('pndb', i)
        if idPNMain == '':
            csvOut.append(hashFound.getData(i))
        else:
            dist = float(hashFound.getData('dist[arcsec]', i))
            found = False
            for j in range(angDiams.size()):
                if angDiams.getData('idPNMain', j) == idPNMain:
                    if angDiams.getData('InUse', j) == '1':
                        found = True
                        if dist > float(angDiams.getData('MajDiam', j)):
                            csvOut.append([name, '', ''])
                        else:
                            csvOut.append(hashFound.getData(i))
            if not found:
                nNotFound += 1
                print(
                    'Problem: did not find an angular diameter for <' + name +
                    '>: idPNMain = ', idPNMain, ', dist = ', dist)
                if dist > 50.:
                    csvOut.append([name, '', ''])
                else:
                    csvOut.append(hashFound.getData(i))
        for j in range(hashSearch.size()):
            if hashSearch.getData('id',
                                  j) == csvOut.getData('id',
                                                       csvOut.size() - 1):
                ra = hmsToDeg(hashSearch.getData('ra', j))
                dec = dmsToDeg(hashSearch.getData('dec', j))
                angDist = angularDistance(ra, dec, ra_3238, dec_3238)
                print('ra = ', ra, ', dec = ', dec, ': angDist = ', angDist)
                angDistPyAsl = pyasl.getAngDist(ra, dec, ra_3238,
                                                dec_3238) * 3600.
                if angDist < 800:
                    if csvOut.getData('pndb', csvOut.size() - 1) != '3238':
                        toDelete.append([
                            csvOut.getData('pndb',
                                           csvOut.size() - 1), ra, dec,
                            angDist, angDistPyAsl
                        ])
                        csvOut.setData('pndb', csvOut.size() - 1, '3238')
    csvFree.writeCSVFile(csvOut, outFileName)
    for i in toDelete:
        print('toDelete : ', i)
def findInHASH():
    N_minDist_idPNMain = []
    with open(csvFileName, 'r') as f:
        listReader = csv.DictReader(f)
        for row in listReader:
            N = row['N']
            ra1 = hmsToDeg(row['ICRS (J2000) RA'].replace(' ', ':'))
            dec1 = dmsToDeg(row['ICRS (J2000) DEC'].replace(' ', ':'))
            print("row['Otype'] = ", row['Otype'], ': RA = ', ra1, ', DEC = ',
                  dec1)
            minDist = 100000000
            idPNMain = '-1'
            with open(hash, 'r') as fHash:
                hashReader = csv.DictReader(fHash)
                for hashRow in hashReader:
                    ra2 = float(hashRow['DRAJ2000'])
                    dec2 = float(hashRow['DDECJ2000'])
                    #                    print('N = ',N,': ra2 = ',ra2,', dec2 = ',dec2)
                    dist = angularDistance(ra1, dec1, ra2, dec2)
                    if dist < minDist:
                        minDist = dist
                        idPNMain = hashRow['idPNMain']
                        print('N = ', N, ': minDist = ', minDist)
                print('N = ', N, ': minDist = ', minDist, ', idPNMain = ',
                      idPNMain)
                N_minDist_idPNMain.append([N, minDist, idPNMain])
    return N_minDist_idPNMain
def checkListObjectsRaDec():
    with open(
            '/Users/azuri/daten/uni/HKU/observing/already_observed_May062020_RA_DEC.list',
            'r') as f:
        lines = f.readlines()
    lines = [line.rstrip('\n') for line in lines]

    path = '/Users/azuri/daten/uni/HKU/observing/targets_SAAO_2020-05-15_good/good/findingCharts.bak'
    fNameIDs = os.path.join(path, 'hashIDs')
    print('fNameIDs = ', fNameIDs)
    with open(fNameIDs, 'r') as f:
        ids = f.readlines()
    ids = [id.rstrip('\n') for id in ids]
    ids = [id[id.rfind('_') + 1:] for id in ids]

    found = []
    for line in lines:
        ra1 = hmsToDeg(line[:line.find(' ')])
        dec1 = dmsToDeg(line[line.find(' ') + 1:])

        for id in ids:
            pos = allPNe.find('idPNMain', id)[0]
            print('id = ', id, ': pos = ', pos)
            ra2 = float(allPNe.getData('DRAJ2000', pos))
            dec2 = float(allPNe.getData('DDECJ2000', pos))

            if (angularDistancePyAsl(ra1, dec1, ra2, dec2) * 3600.) < 30.:
                print('found object with id ' + id +
                      '> in already observed!!!')
                found.append(id)
    print('found = ', found)
Beispiel #4
0
def getMinDistPN(ra, dec, PNMain):
    print('getMinDistPN: checking for ra = <' + ra + '>, dec = <' + dec + '>')
    print('type(ra) = ', type(ra), ', type(dec) = ', type(dec))
    dra = hmsToDeg(ra)
    ddec = dmsToDeg(dec)
    print('dra = ', dra, ', ddec = ', ddec)
    minDist = 10000.
    id = -1
    for i in range(PNMain.size()):
        dist = angularDistance(dra, ddec,
                               hmsToDeg(PNMain.getData('RAJ2000', i)),
                               dmsToDeg(PNMain.getData('DECJ2000', i)))
        if dist < minDist:
            minDist = dist
            id = PNMain.getData('idPNMain', i)
            print('closest PN so far: dist = ', minDist, ', id = ', id)
    return [id, minDist]
Beispiel #5
0
def checkCombinedDiscrepancies(combinedDiscrepancies, allHASHobjects, hashCommonNames):
    csvOut = csvData.CSVData()
    csvOut.header = ['Name','idPNMain','HASH common names', 'RA FRA', 'RA HASH', 'DEC FRA', 'DEC HASH', 'angular distance [arcsec]']
    csvOut.data = []
    emptyData = ['','','', '', '', '', '', '']
    for i in range(combinedDiscrepancies.size()):
        ra = combinedDiscrepancies.getData('RA',i)
        dec = combinedDiscrepancies.getData('DEC',i)
        raDeg = hmsToDeg(ra)
        decDeg = dmsToDeg(dec)
        name = getName(combinedDiscrepancies,'Name',i)
        print('name = <'+name+'>')
        found = False
        for j in range(allHASHobjects.size()):
            if name == allHASHobjects.getData('Name',j).replace(' ',''):
                hashID = allHASHobjects.getData('idPNMain',j)
                angDist = degToArcsec(angularDistancePyAsl(raDeg,decDeg,hmsToDeg(allHASHobjects.getData('RAJ2000',j)),dmsToDeg(allHASHobjects.getData('DECJ2000',j))))
                commonNames = getCommonNames(hashCommonNames,'idPNMain',hashID)
                print('Name = '+name+': HASH ID = ',hashID,': commonNames = ',commonNames,': ra = ',ra,', RA = ',allHASHobjects.getData('RAJ2000',j),', dec = ',dec,', DEC = ',allHASHobjects.getData('DECJ2000',j),', angDist = ',angDist)
                found = True
        if not found:
            print('ERROR: object with name <'+name+'> not found in HASH')
            for j in range(allHASHobjects.size()):
                angDist = degToArcsec(angularDistancePyAsl(raDeg,decDeg,hmsToDeg(allHASHobjects.getData('RAJ2000',j)),dmsToDeg(allHASHobjects.getData('DECJ2000',j))))
                if angDist < maxAngularDistance:
                    hashID = allHASHobjects.getData('idPNMain',j)
                    commonNames = getCommonNames(hashCommonNames,'idPNMain',hashID)
                    if name in commonNames:
                        print('Name = '+name+': HASH ID = ',hashID,': commonNames = ',commonNames,': ra = ',ra,', RA = ',allHASHobjects.getData('RAJ2000',j),', dec = ',dec,', DEC = ',allHASHobjects.getData('DECJ2000',j),', angDist = ',angDist)
                        found = True
                    else:
                        print('Name = <'+name+'>: object found within ',maxAngularDistance,' arcsec: angDist = ',angDist,': ra = ',ra,', RA = ',allHASHobjects.getData('RAJ2000',j),', dec = ',dec,', DEC = ',allHASHobjects.getData('DECJ2000',j),', HASH name = <'+allHASHobjects.getData('Name',j))
                        csvOut.append(emptyData)
                        csvOut.setData('Name',csvOut.size()-1,name)
                        csvOut.setData('idPNMain',csvOut.size()-1,hashID)
                        cNames = commonNames[0]
                        for k in np.arange(1,len(commonNames),1):
                            cNames += ';'+commonNames[k]
                        csvOut.setData('HASH common names',csvOut.size()-1,cNames)
                        csvOut.setData('RA FRA',csvOut.size()-1,ra)
                        csvOut.setData('RA HASH',csvOut.size()-1,allHASHobjects.getData('RAJ2000',j))
                        csvOut.setData('DEC FRA',csvOut.size()-1,dec)
                        csvOut.setData('DEC HASH',csvOut.size()-1,allHASHobjects.getData('DECJ2000',j))
                        csvOut.setData('angular distance [arcsec]',csvOut.size()-1,str(angDist))
    writeCSVFile(csvOut,disrepanciesOutFileName)
Beispiel #6
0
def groupNewPNeAndAverageCoordinates():
    minDists = csvFree.readCSVFile(minDistFile)

    idsAlreadyGrouped = []
    with open(newPNeFile, 'w') as f:
        f.write('DRAJ2000,DDECJ2000\n')
        for i in range(minDists.size()):
            group = []
            dras = []
            ddecs = []
            if (minDists.getData('inside', i) != 'isInside') and (float(
                    minDists.getData('distance', i)) > minDist):
                if minDists.getData('iphasRow', i) not in idsAlreadyGrouped:
                    idsAlreadyGrouped.append(minDists.getData('iphasRow', i))
                    ra = minDists.getData('RAJ2000', i)
                    dec = minDists.getData('DECJ2000', i)
                    dra = hmsToDeg(ra)
                    ddec = dmsToDeg(dec)
                    group.append(i)
                    dras.append(dra)
                    ddecs.append(ddec)
                    for j in np.arange(i + 1, minDists.size(), 1):
                        if minDists.getData('iphasRow',
                                            j) not in idsAlreadyGrouped:
                            ra = minDists.getData('RAJ2000', j)
                            dec = minDists.getData('DECJ2000', j)
                            thisdra = hmsToDeg(ra)
                            thisddec = dmsToDeg(dec)
                            if angularDistance(dra, ddec, thisdra,
                                               thisddec) < minDist:
                                group.append(minDists.getData('iphasRow', j))
                                idsAlreadyGrouped.append(
                                    minDists.getData('iphasRow', j))
                                dras.append(thisdra)
                                ddecs.append(thisddec)
                    print('found ', len(group),
                          ' different coordinates for apparently the same PN')
                    f.write('%.5f,%.5f\n' % (np.mean(dras), np.mean(ddecs)))
Beispiel #7
0
def fixHashFile():
    with open(outputSQLFile, 'w') as w:
        csvHash = csvData.CSVData()
        with open(inputHashFile, 'r') as f:
            hashData = csv.DictReader(f)
            print('hashData.fieldnames = ', hashData.fieldnames)
            csvHash.header = hashData.fieldnames
        with open(inputHashFile, 'r') as f:
            hashData = csv.DictReader(f)
            print('hashData.fieldnames = ', hashData.fieldnames)
            nRows = 0
            for row in hashData:
                nRows += 1
                csvHash.append([row[x] for x in hashData.fieldnames])
                #                if row['CS_DRAJ2000'] == 'NULL':
                print("row['CS_DECJ2000'].split(':')[0][:2] = <" +
                      row['CS_DECJ2000'].split(':')[0][:2] + ">")
                if row['CS_DECJ2000'].split(':')[0][:2] == '-0':
                    print('row = ', row)
                    dra = hmsToDeg(
                        csvHash.getData('CS_RAJ2000',
                                        csvHash.size() - 1))
                    ddec = dmsToDeg(
                        csvHash.getData('CS_DECJ2000',
                                        csvHash.size() - 1))
                    lon, lat = raDecToLonLat(dra, ddec)
                    csvHash.setData('CS_DRAJ2000',
                                    csvHash.size() - 1, str(dra))
                    csvHash.setData('CS_DDECJ2000',
                                    csvHash.size() - 1, str(ddec))
                    csvHash.setData('CS_Glon', csvHash.size() - 1, str(lon))
                    csvHash.setData('CS_Glat', csvHash.size() - 1, str(lat))
                    w.write("UPDATE MainGPN.tbCSCoords SET CS_DRAJ2000 = " +
                            str(dra) + ", CS_DDECJ2000 = " + str(ddec) +
                            ", CS_Glon = " + str(lon) + ", CS_Glat = " +
                            str(lat) + ", CSstat = 'p' WHERE idtbCSCoords = " +
                            csvHash.getData('idtbCSCoords',
                                            csvHash.size() - 1) + ";\n")

    return csvHash
Beispiel #8
0
def fixAccuracy():
    with open(sqlFileOut[:sqlFileOut.rfind('.')]+'_accuracy.sql','w') as f:
        f.write("USE `MainGPN`;\n")
        cspn = csv.DictReader(open(fNameHashCSPN))
        for row in cspn:
            problem = False
            ra = row['CS_RAJ2000']
            dec = row['CS_DECJ2000']
            if '\t' in ra:
                print('found a tab in ra')
                ra = ra.strip()
                problem = True
            if '\t' in dec:
                print('found a tab in dec')
                problem = True
                dec = dec.strip()

            rah, ram, ras = [i for i in ra.split(':')]
            accuracyRA = len(ras[ras.rfind('.')+1:])
            decd, decm, decs = [i for i in dec.split(':')]
            accuracyDEC = len(decs[decs.rfind('.')+1:])
            print('ra = '+ra+': accuracyRA = ',accuracyRA)
            print('dec = '+dec+': accuracyDEC = ',accuracyDEC)
            if accuracyRA > 2:
                problem = True
                ra = rah+':'+ram+':'+'%.2f' % float(ras)
                print('new ra = ',ra)
            if accuracyDEC > 1:
                problem = True
                dec = decd+':'+decm+':'+'%.1f' % float(decs)
                print('new dec = ',dec)
            if problem:
                draCalc = hmsToDeg(ra)
                ddecCalc = dmsToDeg(dec)
                lCalc, bCalc = raDecToLonLat(draCalc,ddecCalc)
                f.write("UPDATE `tbCSCoords` SET `CS_RAJ2000` = '%s', `CS_DECJ2000` = '%s', `CS_DRAJ2000` = %.5f, `CS_DDECJ2000` = %.5f, `CS_Glon` = %.5f, `CS_Glat` = %.5f WHERE `idtbCSCoords` = %d;\n" % (ra, dec, draCalc, ddecCalc, lCalc, bCalc, int(row['idtbCSCoords'])))
Beispiel #9
0
def checkCSPNCoordsAndAddMissingAngles():
#    pnMain = csv.DictReader(open(fNameHashPNMain))
    cspn = csv.DictReader(open(fNameHashCSPN))
#    tbCSPN = csv.DictReader(open(fNameHashTbCSPN))

    iZiggy = 1
    nProblems = 0
    nWrongCoords = 0
    nWrongidPNMain = 0
    with open(sqlFileOut,'w') as f:
        f.write("USE `MainGPN`;\n")
        for line in cspn:
            ra = line['CS_RAJ2000']
            dec = line['CS_DECJ2000']
            dra = line['CS_DRAJ2000']
            ddec = line['CS_DDECJ2000']
            l = line['CS_Glon']
            b = line['CS_Glat']
            idPNMain = line['idPNMain']
            idtbCSCoords = line['idtbCSCoords']
            print('idPNMain = ',idPNMain,', idtbCSCoords = ',idtbCSCoords)
        #    print('idPNMain = ',idPNMain,': line = ',line)
            print('idPNMain = ',idPNMain,': ra = ',ra,', dec = ',dec)
            print('idPNMain = ',idPNMain,': dra = ',dra,', ddec = ',ddec)
            print('idPNMain = ',idPNMain,': l = ',l,', b = ',b)

            isProblem = False
            wrongCoords = False
            if (ra != 'NULL') and (line['userRecord'] != 'chandra0101'):
                draCalc = hmsToDeg(ra)
                ddecCalc = dmsToDeg(dec)
                lCalc, bCalc = raDecToLonLat(draCalc,ddecCalc)
                if dec == 'NULL':
                    print('Problem with idPNMain = ',idPNMain,': ra is not empty but dec is => aborting')
                    isProblem = True
                    STOP
                if dra == 'NULL':
                    isProblem = True
                else:
                    if abs((angularDistancePyAsl(float(dra), float(ddec), draCalc, ddecCalc)*3600.) - angularDistance(float(dra), float(ddec), draCalc, ddecCalc)) > 0.1:
                        print('separation = ',abs((angularDistancePyAsl(float(dra), float(ddec), draCalc, ddecCalc)*3600.) - angularDistance(float(dra), float(ddec), draCalc, ddecCalc)))
                        print('problem: angular distances differ by more than 0.1 arcsec')
                        wrongCoords = True
                    if angularDistance(float(dra), float(ddec), draCalc, ddecCalc) > 0.1:
                        print('angular distance = ',angularDistance(float(dra), float(ddec), draCalc, ddecCalc))
                        print('problem: angular distances between stated and calculated dRA and dDEC differ by more than 0.1 arcsec')
                        wrongCoords = True
                if ddec == 'NULL':
                    isProblem = True
                if l == 'NULL':
                    isProblem = True
                else:
                    raFromlb, decFromlb = lonLatToRaDec(float(l), float(b))
                    raFromlbCalc, decFromlbCalc = lonLatToRaDec(lCalc, bCalc)
                    if angularDistance(raFromlb, decFromlb, raFromlbCalc, decFromlbCalc) > 0.1:
                        print('lCalc = ',lCalc,', bCalc = ',bCalc)
                        print('angular distance = ',angularDistance(raFromlb, decFromlb, raFromlbCalc, decFromlbCalc))
                        print('problem: angular distances between stated and calculated l and b differ by more than 0.1 arcsec')
                        wrongCoords = True
                if b == 'NULL':
                    isProblem = True
            else:
                #remove from both tables
    #            if getidtbCSCoords(idPNMain) != line['idtbCSCoords']:
    #                print("PROBLEM: getidtbCSCoords(idPNMain)=",getidtbCSCoords(idPNMain)," != line['idtbCSCoords']=",line['idtbCSCoords'])
                f.write('DELETE FROM `tbCSCoords` WHERE `idtbCSCoords` = %d;\n' % int(idtbCSCoords))
                print('deleted record from tbCSCoords')
                if line['InUse'] == '1':
                    f.write('DELETE FROM `PNMain_tbCSCoords` WHERE `idtbCSCoords` = %d;\n' % int(idtbCSCoords))
                    print('deleted record from PNMain_tbCSCoords')
                cspnTemp = csv.DictReader(open(fNameHashCSPN))
                setInUse = 0
                for lineTemp in cspnTemp:
                    if lineTemp['idPNMain'] == idPNMain:
                        if lineTemp['userRecord'] != 'chandra0101':
                            if lineTemp['InUse'] == '1':
                                print('Found another entry for idPNMain=',idPNMain,' which was set InUse')
                                setInUse = 1
                if setInUse == 0:
                    cspnTemp = csv.DictReader(open(fNameHashCSPN))
                    for lineTemp in cspnTemp:
                        if lineTemp['idPNMain'] == idPNMain:
                            if (lineTemp['userRecord'] != 'chandra0101') and (setInUse == 0):
                                print('lineTemp[userRecord] = ',lineTemp['userRecord'])
                                setInUse = 1
                                f.write('UPDATE `tbCSCoords` SET `InUse` = 1 WHERE `idtbCSCoords` = %d;\n' % (int(lineTemp['idtbCSCoords'])))
                                f.write("INSERT INTO `PNMain_tbCSCoords`(`idPNMain`,`idtbCSCoords`)")
                                f.write(" VALUES (%d,%d);\n" % (int(idPNMain),
                                                                int(lineTemp['idtbCSCoords'])))
                                print('updated tbCSCoords and added entry to PNMain_tbCSCoords')
                                #STOP
                            elif (lineTemp['userRecord'] != 'chandra0101') and (setInUse == 1):
                                print('Problem: found another entry with InUse == 1')
                                STOP


    #        idtbCSCoords = getidtbCSCoords(idPNMain)
    #        print('idtbCSCoords = ',idtbCSCoords)
            addedTotbCSCoords = False
            if isProblem:
                if getidtbCSCoords(idPNMain) != idtbCSCoords:
                    print("PROBLEM: getidtbCSCoords(idPNMain)=",getidtbCSCoords(idPNMain)," != line['idtbCSCoords']=",line['idtbCSCoords'])
    #                idtbCSCoords = getidtbCSCoords(idPNMain)
                if getidtbCSCoords(idPNMain) is None:
                    if line['InUse'] == '1':
                        f.write("INSERT INTO `PNMain_tbCSCoords`(`idPNMain`,`idtbCSCoords`)")
                        f.write(" VALUES (%d,%d);\n" % (int(idPNMain),
                                                        int(idtbCSCoords)))
                        print('added entry to PNMain_tbCSCoords')
                        addedTotbCSCoords = True
    #                STOP

                nProblems += 1
                f.write('UPDATE `tbCSCoords` SET `CS_DRAJ2000` = %.5f, `CS_DDECJ2000` = %.5f, `CS_Glon` = %.5f, `CS_Glat` = %.5f WHERE `idtbCSCoords` = %d;\n' % (draCalc, ddecCalc, lCalc, bCalc, int(idtbCSCoords)))
                print('updated tbCSCoords')

            if wrongCoords:
                if line['InUse'] == '1':
                    if getidtbCSCoords(idPNMain) != idtbCSCoords:
                        print("PROBLEM: getidtbCSCoords(idPNMain)=",getidtbCSCoords(idPNMain)," != line['idtbCSCoords']=",line['idtbCSCoords'])
                        STOP
    #                idtbCSCoords = getidtbCSCoords(idPNMain)
                nWrongCoords += 1

                #check RA and DEC with the PN
                draPN, ddecPN = getRaDecForPN(idPNMain)
                if angularDistance(draPN, ddecPN, draCalc, ddecCalc) > 20.:
                    print('draPN = ',draPN,', ddecPN = ',ddecPN)
                    print('angular distance = ',angularDistance(draPN, ddecPN, draCalc, ddecCalc))
                    print('problem: angular distances between stated and calculated l and b differ by more than 20. arcsec')
                    #STOP
                f.write('UPDATE `tbCSCoords` SET `CS_DRAJ2000` = %.5f, `CS_DDECJ2000` = %.5f, `CS_Glon` = %.5f, `CS_Glat` = %.5f WHERE `idtbCSCoords` = %d;\n' % (draCalc, ddecCalc, lCalc, bCalc, int(idtbCSCoords)))
            if line['InUse'] == '1':
                if getidPNMain(line['idtbCSCoords']) is None:
                    print('idtbCSCoords = '+idtbCSCoords+' not found in PNMain_tbCSCoords')
                    if not addedTotbCSCoords:
                        f.write("INSERT INTO `PNMain_tbCSCoords`(`idPNMain`,`idtbCSCoords`)")
                        f.write(" VALUES (%d,%d);\n" % (int(idPNMain),
                                                        int(line['idtbCSCoords'])))
                        print('added entry to PNMain_tbCSCoords')
                        addedTotbCSCoords = True
                        STOP
                elif getidPNMain(line['idtbCSCoords']) != idPNMain:
                    print('PROBLEM: wrong idPNMain(=',idPNMain,') in PNMain_tbCSCoords(getidPNMain(',line['idtbCSCoords'],') = ',getidPNMain(line['idtbCSCoords']),')')
                    nWrongidPNMain += 1
                    f.write('DELETE FROM `PNMain_tbCSCoords` WHERE `idtbCSCoords` = %d;\n' % int(line['idtbCSCoords']))
                    print('deleted entry from PNMain_tbCSCoords')
                    f.write("INSERT INTO `PNMain_tbCSCoords`(`idPNMain`,`idtbCSCoords`)")
                    f.write(" VALUES (%d,%d);\n" % (int(idPNMain),
                                                    int(idtbCSCoords)))
                    print('added entry to PNMain_tbCSCoords')
    #                STOP
            if line['userRecord'] == 'ziggy':
                with open(sqlFileOutZiggy,'a') as fZiggy:
                    fZiggy.write("INSERT INTO `CSPN_ziggy`(`idCSPN_ziggy`,`idPNMain`,`mapFlag`)")
                    fZiggy.write(" VALUES (%d,%d,'%s');\n" % (iZiggy,
                                                            int(idPNMain),
                                                            'y'))
                iZiggy+=1


    print('found ',nProblems,' problematic CSPN and ',nWrongCoords,' CSPN with problematic coordinates, ',nWrongidPNMain,' wrong idPNMain in PNMain_tcCSCoords')
Beispiel #10
0
def getRaDecForPN(idPNMain):
    pnMainTemp = csv.DictReader(open(fNameHashPNMain))
    for row in pnMainTemp:
        if row['idPNMain'] == idPNMain:
            return [hmsToDeg(row['RAJ2000']), dmsToDeg(row['DECJ2000'])]
    return None
Beispiel #11
0
                                    foundIDx = iHash
                                    found = True
                                    print(
                                        'found Barlow PNG ' +
                                        csvBarlow.getData('PNG', iRow) +
                                        ', HASH PNG = ' +
                                        csvHash.getData('PNG', foundIDx) +
                                        ', name = <' +
                                        cNames.getData('Name', iName) +
                                        '> at idPNMain = ', idPNMain)
                if not found:

                    ra, dec = getRAandDECFromIPHAS(
                        csvBarlow.getData('Name', iRow))
                    print('ra = <' + ra + '>, dec = <' + dec + '>')
                    lon, lat = raDecToLonLat(hmsToDeg(ra), dmsToDeg(dec))
                    png = '%010.6f' % lon
                    png = png[:png.find('.') + 2]
                    #png = png.zfill(3)
                    if lat > 0:
                        png = png + '+'
                    png = png + '%08.6g' % lat
                    png = png[:png.rfind('.') + 2]
                    print(
                        'lon = ', lon, ', lat = ', lat, ', png = <' + png +
                        '>, PNG = <' + csvBarlow.getData('PNG', iRow) + '>')
                    for iHash in range(csvHash.size()):
                        if csvHash.getData('PNG', iHash) == png:
                            found = True
                            idPNMain = int(csvHash.getData('idPNMain', iHash))
                            foundIDx = iHash
Beispiel #12
0
def createMySQLCommands():
    csv = csvFree.readCSVFile(inList)
    with open(inList[:inList.rfind('.')] + '.sql', 'w') as f:
        for i in np.arange(0, csv.size(), 1):
            f.write("USE `MainGPN`;\n")
            hashIDs.append(idPNMainStart + i)
            raHMS = csv.getData("RAJ2000", i)
            ra = hmsToDeg(raHMS)
            decDMS = csv.getData("DECJ2000", i)
            dec = dmsToDeg(decDMS)
            refined = csv.getData('Refined coordinates', i)
            refined = refined.replace('  ', ' ')
            if refined != '':
                print('refined = <' + refined + '>')
                raH, raM, raS, decD, decM, decS = refined.split(' ')
                raHMS = raH + ':' + raM + ':' + raS
                ra = hmsToDeg(raHMS)
                decDMS = decD + ':' + decM + ':' + decS
                dec = dmsToDeg(decDMS)
                print('refined coordinates: raHMS = <' + raHMS +
                      '> decDMS = <' + decDMS + '>')
                print('refined coordinates: ra = ', ra, ' dec = ', dec)
            print('raHMS = <' + raHMS + '> decDMS = <' + decDMS + '>')
            print('ra = ', ra, ' dec = ', dec)
            lon, lat = raDecToLonLat(ra, dec)
            print('lon=', lon, ', lat=', lat)
            png = ''
            if lon < 100:
                png += '0'
            if lon < 10:
                png += '0'
            png += str(lon)
            png = png[:png.rfind('.') + 2]
            #            print('png = <'+png+'>')
            if lat >= 0.:
                png += '+'
#                print('png = <'+png+'>')
            png += str(lat)
            #            print('png = <'+png+'>')
            png = png[:png.rfind('.') + 2]
            #            print('png = <'+png+'>')

            if (lat < 10.) and (lat >= 0.):
                png = png[:png.rfind('+') + 1] + '0' + png[png.rfind('+') + 1:]
            if (lat > -10.) and (lat < 0.):
                png = png[:png.rfind('-') + 1] + '0' + png[png.rfind('-') + 1:]
#                print('png = <'+png+'>')
            print('PNG ' + png)
            #            STOP
            f.write(
                "INSERT INTO `PNMain`(`idPNMain`,`PNG`,`refPNG`,`RAJ2000`,`DECJ2000`,`DRAJ2000`,`DDecJ2000`,"
            )
            f.write(
                "`Glon`,`Glat`,`refCoord`,`Catalogue`,`refCatalogue`,`userRecord`,`domain`,`refDomain`,`PNstat`,`refPNstat`,`refSimbadID`,`show`) "
            )
            f.write(
                "VALUES (%d,'%s','%s','%s','%s',%.5f,%.5f,%.5f,%.5f,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');\n"
                % (idPNMainStart + i, png, 'sys', raHMS, decDMS, ra, dec, lon,
                   lat, 'DSHPNe', 'DSHPNe', 'ziggy', 'ziggy', 'Galaxy',
                   'ziggy', csv.getData('PNstat', i), 'ziggy', 'sys', 'y'))

            f.write(
                "INSERT INTO `tbCNames`(`idtbCNames`,`Name`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`simbadID`,`flag`)"
            )
            f.write("VALUES (%d,'%s','%s',%d,'%s','%s',%d,'%s','%s');\n" %
                    (idtbCNamesStart + i, csv.getData('Name', i), 'DSHPNe', 1,
                     'sys', 'ziggy', idPNMainStart + i, 'n', 'n'))

            f.write(
                "INSERT INTO `PNMain_tbCNames`(`idPNMain`,`idtbCNames`) VALUES (%d,%d);\n"
                % (idPNMainStart + i, idtbCNamesStart + i))

            majDiamStr = csv.getData("MajDiam",
                                     i).strip('~').rstrip('"').rstrip(':')
            minDiamStr = csv.getData("MinDiam",
                                     i).strip('~').rstrip('"').rstrip(':')
            if majDiamStr in ['stellar?', 'stellar']:
                majDiamStr = '1'
                minDiamStr = '1'


#            if 'x' in diamStr:
            f.write(
                "INSERT INTO `tbAngDiam`(`idtbAngDiam`,`MajDiam`,`MinDiam`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`tempflag`) "
            )
            f.write(
                "VALUES (%d,%.1f,%.1f,'%s',%d,'%s','%s',%d,'%s');\n" %
                (idtbAngDiamStart + i, float(majDiamStr), float(minDiamStr),
                 'DSHPNe', 1, 'sys', 'ziggy', idPNMainStart + i, 'n'))
            #            else:
            #                f.write("INSERT INTO `tbAngDiam`(`idtbAngDiam`,`MajDiam`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`tempflag`) ")
            #                f.write("VALUES (%d,%.1f,'%s',%d,'%s','%s',%d,'%s');\n" % (idtbAngDiamStart+i,
            #                                                                           float(diamStr),
            #                                                                           'FrenchAmateurs',
            #                                                                           1,
            #                                                                           'sys',
            #                                                                           'ziggy',
            #                                                                           idPNMainStart+i,
            #                                                                           'n'))

            f.write(
                "INSERT INTO `PNMain_tbAngDiam`(`idPNMain`,`idtbAngDiam`) VALUES (%d,%d);\n"
                % (idPNMainStart + i, idtbAngDiamStart + i))

            name = csv.getData('Name', i)
            if name[:4] == 'Pa J':
                name = name[3:]
            notes = csv.getData('comment1', i)
            if notes == []:
                notes = csv.getData('comment2', i)
            else:
                notes += ', ' + csv.getData('comment2', i)
            print('notes = <' + notes + '>')
            f.write(
                "INSERT INTO `tbUsrComm`(`idtbUsrComm`,`idPNMain`,`user`,`public`,`comment`,`date`) "
            )
            f.write("VALUES (%d,%d,'%s','%s','%s','%s');\n" %
                    (idtbUsrCommStart + i, idPNMainStart + i, 'ziggy', 'y',
                     notes, '2020-03-31 19:30:00'))

            f.write("USE `MainPNData`;\n")
            f.write(
                "INSERT INTO `DSHPNe`(`idDSHPNe`,`Discoverer`,`ID`,`PNG`,`RAJ2000`,`DECJ2000`,`DRAJ2000`,`DDECJ2000`,`Glon`,`Glat`,`MajDiam`,`MinDiam`,`status`,`discovery`,`narrowImag`,`broadband`,`echelle`,`notes`,`PNMainDist`,`mapFlag`,`idPNMain`) "
            )
            f.write(
                "VALUES (%d,'%s','%s','%s','%s','%s',%.4f,%.4f,%.2f,%.2f,%d,%d,'%s','%s','%s','%s','%s','%s',%d,'%s',%d);\n"
                % (idDSHPNeStart + i, 'Pa', name, png, raHMS,
                   decDMS, ra, dec, lon, lat, float(majDiamStr),
                   float(minDiamStr), 'New Candidates', '', '', '', '', notes,
                   -1, 'y', idPNMainStart + i))

    with open(inList[:inList.rfind('.')] + '.fetch', 'w') as f:
        f.write('hashpn fetch all ' + str(hashIDs[0]))
        for id in np.arange(1, len(hashIDs), 1):
            f.write(',' + str(hashIDs[id]))
        f.write(' -w force\n')
        f.write('hashpn brew all ' + str(hashIDs[0]))
        for id in np.arange(1, len(hashIDs), 1):
            f.write(',' + str(hashIDs[id]))
        f.write(' -w\n')
Beispiel #13
0
def addNewCandidates(inFileName, sqlFileName):
    ids = ''
    idsNew = ''
    nIds = 0
    idPNMainStart = 0
    idtbCNamesStart = 0
    newNames = []
    rows = csv.DictReader(open(pnMainFile))
    pngNames = []
    for row in rows:
        pngNames.append(row['PNG'])
        idPNMainStart = int(row['idPNMain']) + 1
    rows = csv.DictReader(open(tbCNamesFile))
    for row in rows:
        idtbCNamesStart = int(row['idtbCNames']) + 1
    print('idPNMainStart = ', idPNMainStart)
    print('idtbCNamesStart = ', idtbCNamesStart)
    nNew = 0
    nFound = 0
    with open(sqlFileName, 'w') as f:
        rows = csv.DictReader(open(inFileName))
        for row in rows:
            if row['pndb'] == '':
                nNew += 1
                print(row['id'] + ": new PN")
                rowsRaDec = csv.DictReader(open(raDecFileName))
                ra = ''
                dec = ''
                for rowRaDec in rowsRaDec:
                    if row['id'] == rowRaDec['id']:
                        ra = rowRaDec['RA']
                        dec = rowRaDec['DEC']
                lon, lat = raDecToLonLat(hmsToDeg(ra), dmsToDeg(dec))
                pngName = getNewPNGName(pngNames, lon, lat)
                print('pngName = <' + pngName + '>')
                pngNames.append(pngName)
                if True:
                    newNames.append(row['id'])
                    f.write("USE `MainGPN`;\n")
                    f.write(
                        "INSERT INTO `PNMain`(`idPNMain`,`PNG`,`refPNG`,`RAJ2000`,`DECJ2000`,`DRAJ2000`,`DDECJ2000`,`Glon`,`Glat`,`refCoord`,`Catalogue`,`refCatalogue`,`userRecord`,`domain`,`refDomain`,`PNstat`,`refPNstat`,`refSimbadID`,`show`)"
                    )
                    f.write(
                        "VALUES (%d,'%s','%s','%s','%s',%.5f,%.5f,%.5f,%.5f,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');\n"
                        %
                        (idPNMainStart, pngName, 'sys', ra, dec, hmsToDeg(ra),
                         dmsToDeg(dec), lon, lat, 'ziggy', 'ziggy', 'ziggy',
                         'ziggy', 'Galaxy', 'ziggy', 'c', 'ziggy', 'sys', 'y'))
                    f.write(
                        "INSERT INTO `tbCNames`(`idtbCNames`,`Name`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`)"
                    )
                    f.write("VALUES (%d,'%s','%s',%d,'%s','%s',%d);\n" %
                            (idtbCNamesStart, row['id'], 'ziggy', 1, 'ziggy',
                             'ziggy', idPNMainStart))
                    f.write(
                        "INSERT INTO `PNMain_tbCNames`(`idPNMain`,`idtbCNames`)"
                    )
                    f.write("VALUES (%d,%d);\n" %
                            (idPNMainStart, idtbCNamesStart))
                    idtbCNamesStart += 1
                idPNMainStart += 1
                idsNew += str(idPNMainStart) + ','
                nIds += 1
            else:
                nFound += 1
                print(row['id'] + ": " + row['pndb'])
                nameFound = False
                tbCNames = csv.DictReader(open(tbCNamesFile))
                for tbCName in tbCNames:
                    if tbCName['Name'].replace(' ', '') == row['id'].replace(
                            ' ', ''):
                        nameFound = True
                if not nameFound:
                    if row['id'][:2] != 'PN':
                        f.write(
                            "INSERT INTO `tbCNames`(`idtbCNames`,`Name`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`)"
                        )
                        f.write("VALUES (%d,'%s','%s',%d,'%s','%s',%d);\n" % (
                            idtbCNamesStart,
                            row['id'],
                            'ziggy',
                            0,
                            'ziggy',
                            'ziggy',
                            int(row['pndb']),
                        ))
                        #                        f.write("INSERT INTO `PNMain_tbCNames`(`idtbCNames`,`idPNMain`)")
                        #                        f.write("VALUES (%d,%d);\n"
                        #                                % (idtbCNamesStart,
                        #                                int(row['pndb']),
                        #                                ))
                        idtbCNamesStart += 1
                ids += row['pndb'] + ','

    print('ids = ', nIds, ': ', ids)
    print('idsNew = ', idsNew, ' newNames = ', newNames)
    print('nNew = ', nNew, ', nFound = ', nFound)
 if csvSimba.getData('Name in the paper',
                     iSimba) == csv1.getData('Name', i):
     print('found ', csv1.getData('Name', i))
     found = True
     idPNMain = csvSimba.getData('Hash id', iSimba)
     nfound = 0
     if csvSimba.getData(
             'Does this star have central star coodinate in HASH?',
             iSimba) == '':
         for iHash in range(csvHash.size()):
             if csvHash.getData('idPNMain', iHash) == idPNMain:
                 j += 1
                 nfound += 1
                 print('idPNMain = ', idPNMain)
                 dist = angularDistance(
                     hmsToDeg(csvHash.getData('RAJ2000', iHash)) *
                     u.deg,
                     dmsToDeg(csvHash.getData('DECJ2000', iHash)) *
                     u.deg,
                     hmsToDeg(csv1.getData('RAJ2000', i)) * u.deg,
                     dmsToDeg(csv1.getData('DECJ2000', i)) * u.deg)
                 f.write(
                     "INSERT INTO `Weidmann_2020_not_in_HASH`(`idWeidmann_2020_not_in_HASH`,`idPNMain`,`PNG`,`f_PNG`,`Name`,`RAJ2000`,`DECJ2000`,`SpT`,`ref_SpT`,`SpT2`,`ref_SpT2`,`RB`,`ref_Spectra`,`PNMainDist`,`mapflag`)"
                 )
                 #                        f.write("INSERT INTO `Weidmann_2020_catalog_table1`(`idWeidmann_2020_catalog_table1`,`idPNMain`,`PNG`,`f_PNG`,`Name`,`RAJ2000`,`DECJ2000`,`SpT`,`ref_SpT`,`SpT2`,`ref_SpT2`,`RB`,`ref_Spectra`,`PNMainDist`,`mapflag`)")
                 #['PNG', 'f_', 'Name', 'RAJ2000', 'DECJ2000', 'SpT', 'SpT_Ref', 'SpT2', 'SpT2_Ref', 'RB', 'Ref spectra\r']
                 f.write(
                     "VALUES (%d,%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s');\n"
                     % (j, int(idPNMain), csv1.getData(
                         'PNG', i), csv1.getData('f_', i),
                        csv1.getData('Name', i).rstrip(),
def createMySQLCommands():
    csv = csvFree.readCSVFile(inList)
    with open(inList[:inList.rfind('.')]+'.sql','w') as f:
        f.write('DROP TABLE IF EXISTS MainPNData.FrenchAmateurs_Oct2021;\n')
        f.write('CREATE TABLE IF NOT EXISTS MainPNData.FrenchAmateurs_Oct2021 (\n')
        f.write('idFrenchAmateurs_Oct2021 INT AUTO_INCREMENT PRIMARY KEY,\n')
        f.write('idPNMain INT,\n')
        f.write('mapFlag VARCHAR(1) NOT NULL\n')
        f.write(');\n')

        for i in np.arange(0,csv.size(),1):
            f.write("USE `MainGPN`;\n")
            hashIDs.append(idPNMainStart+i)
            raHMS = csv.getData("AD:(J2000)",i)
            print('raHMS = <'+raHMS+'>')
            ra = hmsToDeg(raHMS)
            decDMS = csv.getData("DEC (J2000)",i)
            dec = dmsToDeg(decDMS)
            print('raHMS = <'+raHMS+'> decDMS = <'+decDMS+'>')
            print('ra = ',ra,' dec = ',dec)
            lon, lat = raDecToLonLat(ra,dec)
            print('lon=',lon,', lat=',lat)
            png = ''
            if lon < 100:
                png += '0'
            if lon < 10:
                png += '0'
            png += str(lon)
            png = png[:png.rfind('.')+2]
#            print('png = <'+png+'>')
            if lat >= 0.:
                png += '+'
#                print('png = <'+png+'>')
            png += str(lat)
#            print('png = <'+png+'>')
            png = png[:png.rfind('.')+2]
#            print('png = <'+png+'>')

            if (lat < 10.) and (lat >= 0.):
                png = png[:png.rfind('+')+1]+'0'+png[png.rfind('+')+1:]
            if (lat  > -10.) and (lat < 0.):
                png = png[:png.rfind('-')+1]+'0'+png[png.rfind('-')+1:]
#                print('png = <'+png+'>')
            print('PNG '+png)
#            STOP
            f.write("INSERT INTO `PNMain`(`idPNMain`,`PNG`,`refPNG`,`RAJ2000`,`DECJ2000`,`DRAJ2000`,`DDecJ2000`,")
            f.write("`Glon`,`Glat`,`refCoord`,`Catalogue`,`refCatalogue`,`userRecord`,`domain`,`refDomain`,`PNstat`,`refPNstat`,`refSimbadID`,`show`) ")
            f.write("VALUES (%d,'%s','%s','%s','%s',%.5f,%.5f,%.5f,%.5f,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');\n" % (idPNMainStart+i,
                                                                                                                                  png,
                                                                                                                                  'sys',
                                                                                                                                  raHMS,
                                                                                                                                  decDMS,
                                                                                                                                  ra,
                                                                                                                                  dec,
                                                                                                                                  lon,
                                                                                                                                  lat,
                                                                                                                                  'FrenchAmateurs',
                                                                                                                                  'FrenchAmateurs',
                                                                                                                                  'ziggy',
                                                                                                                                  'ziggy',
                                                                                                                                  'Galaxy',
                                                                                                                                  'ziggy',
                                                                                                                                  'c',
                                                                                                                                  'ziggy',
                                                                                                                                  'sys',
                                                                                                                                  'y'))

            f.write("INSERT INTO `tbCNames`(`idtbCNames`,`Name`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`simbadID`,`flag`)")
            f.write("VALUES (%d,'%s','%s',%d,'%s','%s',%d,'%s','%s');\n" % (idtbCNamesStart + i,
                                                                            csv.getData('NOM',i),
                                                                            'FrenchAmateurs',
                                                                            1,
                                                                            'sys',
                                                                            'ziggy',
                                                                            idPNMainStart+i,
                                                                            'n',
                                                                            'n'))

            f.write("INSERT INTO `PNMain_tbCNames`(`idPNMain`,`idtbCNames`) VALUES (%d,%d);\n" % (idPNMainStart+i,idtbCNamesStart+i))

            majDiamStr = csv.getData("Dimension en minute d'arc (')",i).strip('~').rstrip('"').rstrip(':')
            if 'x' in majDiamStr:
                majDiamStr,minDiamStr = majDiamStr.split(' x ')
                print('majDiamStr = <',majDiamStr,'>, minDiamStr = <',minDiamStr,'>')
                if float(majDiamStr) < float(minDiamStr):
                    minDiamStr,majDiamStr = [majDiamStr,minDiamStr]
            else:
                minDiamStr = ''
            if majDiamStr in ['stellar?','stellar']:
                majDiamStr = '1'
                minDiamStr = '1'
#            if 'x' in diamStr:
            print('majDiamStr = <',majDiamStr,'>, minDiamStr = <',minDiamStr,'>')
            if minDiamStr != '':
                f.write("INSERT INTO `tbAngDiam`(`idtbAngDiam`,`MajDiam`,`MinDiam`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`tempflag`) ")
                f.write("VALUES (%d,%.1f,%.1f,'%s',%d,'%s','%s',%d,'%s');\n" % (idtbAngDiamStart+i,
                                                                                float(majDiamStr)*60.,
                                                                                float(minDiamStr)*60.,
                                                                                'FrenchAmateurs',
                                                                                1,
                                                                                'sys',
                                                                                'ziggy',
                                                                                idPNMainStart+i,
                                                                                'n'))
            else:
                f.write("INSERT INTO `tbAngDiam`(`idtbAngDiam`,`MajDiam`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`tempflag`) ")
                f.write("VALUES (%d,%.1f,'%s',%d,'%s','%s',%d,'%s');\n" % (idtbAngDiamStart+i,
                                                                           float(majDiamStr)*60.,
                                                                           'FrenchAmateurs',
                                                                           1,
                                                                           'sys',
                                                                           'ziggy',
                                                                           idPNMainStart+i,
                                                                           'n'))

            f.write("INSERT INTO `PNMain_tbAngDiam`(`idPNMain`,`idtbAngDiam`) VALUES (%d,%d);\n" % (idPNMainStart+i,idtbAngDiamStart+i))

#            name=csv.getData('Name',i)
#            if name[:4] == 'Pa J':
#                name = name[3:]
#            notes = csv.getData('comment1',i)
#            if notes == []:
#                notes = csv.getData('comment2',i)
#            else:
#                notes += ', '+csv.getData('comment2',i)
#            print('notes = <'+notes+'>')
#            f.write("INSERT INTO `tbUsrComm`(`idtbUsrComm`,`idPNMain`,`user`,`public`,`comment`,`date`) ")
#            f.write("VALUES (%d,%d,'%s','%s','%s','%s');\n" % (idtbUsrCommStart+i,
#                                                               idPNMainStart+i,
#                                                               'ziggy',
#                                                               'y',
#                                                               notes,
#                                                               '2020-03-31 19:30:00'))

            f.write("USE `MainPNData`;\n")
            f.write("INSERT INTO `FrenchAmateurs_Oct2021`(`idFrenchAmateurs_Oct2021`,`idPNMain`,`mapFlag`) ")
            f.write("VALUES (%d,%d,'%s');\n"
                                                                         % (idFRAStart+i,
                                                                            idPNMainStart+i,
                                                                            'y',
                                                                            ))

    with open(inList[:inList.rfind('.')]+'.fetch','w') as f:
        f.write('hashpn fetch all '+str(hashIDs[0]))
        for id in np.arange(1,len(hashIDs),1):
            f.write(','+str(hashIDs[id]))
        f.write(' -w force\n')
        f.write('hashpn brew all '+str(hashIDs[0]))
        for id in np.arange(1,len(hashIDs),1):
            f.write(','+str(hashIDs[id]))
        f.write(' -w\n')
def createMySQLCommands():
    csv = csvFree.readCSVFile(hashOutList[:hashOutList.rfind('.')] +
                              '_not_in_HASH.csv')
    print('csv.header = ', csv.header)
    with open(hashOutList[:hashOutList.rfind('.')] + '_not_in_HASH.sql',
              'w') as f:
        f.write("USE `MainGPN`;\n")
        for i in np.arange(0, csv.size(), 1):
            hashIDs.append(idPNMainStart + i)
            lon, lat = raDecToLonLat(hmsToDeg(csv.getData("AD:(J2000)", i)),
                                     dmsToDeg(csv.getData("DEC (J2000)", i)))
            f.write(
                "INSERT INTO `PNMain`(`idPNMain`,`PNG`,`refPNG`,`RAJ2000`,`DECJ2000`,`DRAJ2000`,`DDecJ2000`,"
            )
            f.write(
                "`Glon`,`Glat`,`refCoord`,`Catalogue`,`refCatalogue`,`userRecord`,`domain`,`refDomain`,`PNstat`,`refPNstat`,`refSimbadID`,`show`) "
            )
            f.write(
                "VALUES (%d,'%s','%s','%s','%s',%.5f,%.5f,%.5f,%.5f,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');\n"
                % (idPNMainStart + i, csv.getData('Coordonnes galactiques',
                                                  i), 'sys',
                   csv.getData("AD:(J2000)", i), csv.getData("DEC (J2000)", i),
                   hmsToDeg(csv.getData("AD:(J2000)", i)),
                   dmsToDeg(csv.getData("DEC (J2000)", i)), lon, lat,
                   'FrenchAmateurs', 'FrenchAmateurs', 'ziggy', 'ziggy',
                   'Galaxy', 'ziggy', 'c', 'ziggy', 'sys', 'y'))

            f.write(
                "INSERT INTO `tbCNames`(`idtbCNames`,`Name`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`simbadID`,`flag`)"
            )
            f.write(
                "VALUES (%d,'%s','%s',%d,'%s','%s',%d,'%s','%s');\n" %
                (idtbCNamesStart + i, csv.getData('NOM', i), 'FrenchAmateurs',
                 1, 'sys', 'ziggy', idPNMainStart + i, 'n', 'n'))

            f.write(
                "INSERT INTO `PNMain_tbCNames`(`idPNMain`,`idtbCNames`) VALUES (%d,%d);\n"
                % (idPNMainStart + i, idtbCNamesStart + i))

            diamStr = csv.getData("Dimension en minute d'arc (')",
                                  i).strip(' ').rstrip(' ')
            if 'x' in diamStr:
                f.write(
                    "INSERT INTO `tbAngDiam`(`idtbAngDiam`,`MajDiam`,`MinDiam`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`tempflag`) "
                )
                f.write(
                    "VALUES (%d,%.1f,%.1f,'%s',%d,'%s','%s',%d,'%s');\n" %
                    (idtbAngDiamStart + i, float(diamStr[:diamStr.find(' ')]),
                     float(diamStr[diamStr.rfind(' ') + 1:]), 'FrenchAmateurs',
                     1, 'sys', 'ziggy', idPNMainStart + i, 'n'))
            else:
                f.write(
                    "INSERT INTO `tbAngDiam`(`idtbAngDiam`,`MajDiam`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`,`tempflag`) "
                )
                f.write(
                    "VALUES (%d,%.1f,'%s',%d,'%s','%s',%d,'%s');\n" %
                    (idtbAngDiamStart + i, float(diamStr), 'FrenchAmateurs', 1,
                     'sys', 'ziggy', idPNMainStart + i, 'n'))

            f.write(
                "INSERT INTO `PNMain_tbAngDiam`(`idPNMain`,`idtbAngDiam`) VALUES (%d,%d);\n"
                % (idPNMainStart + i, idtbAngDiamStart + i))
    with open(hashOutList[:hashOutList.rfind('.')] + '_not_in_HASH.fetch',
              'w') as f:
        f.write('hashpn fetch all ' + str(hashIDs[0]))
        for id in np.arange(1, len(hashIDs), 1):
            f.write(',' + str(hashIDs[id]))
        f.write(' -w force\n')
        f.write('hashpn brew all ' + str(hashIDs[0]))
        for id in np.arange(1, len(hashIDs), 1):
            f.write(',' + str(hashIDs[id]))
        f.write(' -w\n')
Beispiel #17
0
                        names.append(row['Name'])

with open(sqlFileOut, 'w') as f:
    rows = csv.DictReader(open(hashFileOut))
    for row in rows:
        if row['pndb'] == '':
            print(row['id'] + ": new PN")
            rowsRaDec = csv.DictReader(
                open(os.path.join(path, 'raAndDecs.csv')))
            ra = ''
            dec = ''
            for rowRaDec in rowsRaDec:
                if row['id'] == rowRaDec['id']:
                    ra = rowRaDec['RA']
                    dec = rowRaDec['DEC']
            lon, lat = raDecToLonLat(hmsToDeg(ra), dmsToDeg(dec))
            f.write("USE `MainGPN`;\n")
            f.write(
                "INSERT INTO `PNMain`(`idPNMain`,`PNG`,`refPNG`,`RAJ2000`,`DECJ2000`,`DRAJ2000`,`DDECJ2000`,`Glon`,`Glat`,`refCoord`,`Catalogue`,`refCatalogue`,`userRecord`,`domain`,`refDomain`,`PNstat`,`refPNstat`,`refSimbadID`,`show`)"
            )
            f.write(
                "VALUES (%d,'%s','%s','%s','%s',%.5f,%.5f,%.5f,%.5f,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');\n"
                % (idPNMainStart, getPNGName(
                    lon, lat), 'sys', ra, dec, hmsToDeg(ra), dmsToDeg(dec),
                   lon, lat, 'qparker', 'tstenborg', 'ziggy', 'ziggy',
                   'Galaxy', 'ziggy', 'c', 'ziggy', 'sys', 'y'))
            f.write(
                "INSERT INTO `tbCNames`(`idtbCNames`,`Name`,`reference`,`InUse`,`refInUse`,`userRecord`,`idPNMain`)"
            )
            f.write("VALUES (%d,'%s','%s',%d,'%s','%s',%d);\n" %
                    (idtbCNamesStart, row['id'][:2] + ' ' + row['id'][2:],
Beispiel #18
0
iSuvas = 1
idtbCSCoords = 7828

with open(sqlOut,'w') as f:
    f.write('USE MainGPN;\n')

with open(sqlOutSuvas,'w') as fs:
    fs.write('CREATE TABLE IF NOT EXISTS MainPNData.CSPN_suvas (\n')
    fs.write('idCSPN_suvas INT UNIQUE AUTO_INCREMENT PRIMARY KEY,\n')
    fs.write('idPNMain INT UNIQUE,\n')
    fs.write('mapFlag  VARCHAR(1) NOT NULL\n')
    fs.write(');\n')
    fs.write('USE MainPNData;\n')
for row in simba:
    if (row['userRecord'] == 'chandra0101') and (':' in row['CS_RA_Simba']):
        draCalc = hmsToDeg(row['CS_RA_Simba'])
        ddecCalc = dmsToDeg(row['CS_Dec_Simba'])
        lCalc, bCalc = raDecToLonLat(draCalc,ddecCalc)
        with open(sqlOut,'a') as f:
            f.write("INSERT INTO `tbCSCoords`(`idtbCSCoords`,`CS_RAJ2000`,`CS_DECJ2000`,`CS_DRAJ2000`,`CS_DDECJ2000`,`CS_Glon`,`CS_Glat`,`InUse`,`userRecord`,`idPNMain`)\n")
            f.write("VALUES (%d,'%s','%s',%.5f,%.5f,%.5f,%.5f,%d,'%s',%d);\n" % (idtbCSCoords,
                                                                                 row['CS_RA_Simba'],
                                                                                 row['CS_Dec_Simba'],
                                                                                 draCalc,
                                                                                 ddecCalc,
                                                                                 lCalc,
                                                                                 bCalc,
                                                                                 0,
                                                                                 'Simba',
                                                                                 int(row['idPNMain'])))
        with open(sqlOutSuvas,'a') as fs:
def findPNeNotInHASH():
    csvHASH = csvFree.readCSVFile(hashOutList)
    print('csvAll.size() = ', csvHASH.size())
    print('csvAll.header = ', csvHASH.header)

    found = []
    for i in np.arange(0, csvHASH.size(), 1):
        if csvHASH.getData('pndb', i) != '':
            found.append(i)
    print('found = ', found)
    found.reverse()
    print('found = ', found)
    for i in found:
        csvHASH.removeRow(i)
    print('csvAll.size() = ', csvHASH.size())

    keepColumns = [
        "NOM", "AD:(J2000)", "DEC (J2000)", "Dimension en minute d'arc (')",
        "Coordonnées galactiques"
    ]
    print('keepColumns = ', keepColumns)
    csvOut = None
    for iList in [longList, shortList]:
        csv = readFRAFile(iList)
        for keyword in csv.header:
            print('checking keyword <' + keyword + '>')
            if keyword not in keepColumns:
                print('keyword <' + keyword +
                      '> not found in keepColumns => removing column')
                csv.removeColumn(keyword)
        print('csv.header = ', csv.header)
        print('csv.data = ', csv.data)

        hashNames = csvHASH.getData('id')
        remove = []
        for i in np.arange(0, csv.size(), 1):
            if csv.getData('NOM', i).replace(' ', '') not in hashNames:
                remove.append(i)
        remove.reverse()
        for i in remove:
            csv.removeRow(i)

        if "Coordonnées galactiques" not in csv.header:
            csv.addColumn("Coordonnées galactiques")
        for i in np.arange(0, csv.size(), 1):
            lon, lat = raDecToLonLat(hmsToDeg(csv.getData("AD:(J2000)", i)),
                                     dmsToDeg(csv.getData("DEC (J2000)", i)))
            print('lon=', lon, ', lat=', lat)
            png = ''
            if lon < 100:
                png += '0'
            if lon < 10:
                png += '0'
            png += str(lon)
            png = png[:png.rfind('.') + 2]
            #            print('png = <'+png+'>')
            if lat >= 0.:
                png += '+'
#                print('png = <'+png+'>')
            png += str(lat)
            #            print('png = <'+png+'>')
            png = png[:png.rfind('.') + 2]
            #            print('png = <'+png+'>')

            if (lat < 10.) and (lat >= 0.):
                png = png[:png.rfind('+') + 1] + '0' + png[png.rfind('+') + 1:]
            if (lat > -10.) and (lat < 0.):
                png = png[:png.rfind('-') + 1] + '0' + png[png.rfind('-') + 1:]


#                print('png = <'+png+'>')
            print('PNG ' + png)
            csv.setData("Coordonnées galactiques", i, png)
        if not csvOut:
            csvOut = csv
        else:
            csvOut.append(csv)

    # convert diameters from arcmin to arcsec
    for i in np.arange(0, csvOut.size(), 1):
        diamStr = csvOut.getData("Dimension en minute d'arc (')",
                                 i).rstrip(' ')
        print('diamStr = <' + diamStr + '>')
        diamStrOut = ''
        if 'x' in diamStr:
            diamA = float(diamStr[:diamStr.find(' ')]) * 60.
            diamB = float(diamStr[diamStr.rfind(' ') + 1:]) * 60.
            diamStrOut = '%.1f x %.1f' % (diamA, diamB)
        else:
            diamStrOut = '%.1f' % (float(diamStr) * 60.)
        csvOut.setData("Dimension en minute d'arc (')", i, diamStrOut)

    # write output
    csvFree.writeCSVFile(
        csvOut, hashOutList[:hashOutList.rfind('.')] + '_not_in_HASH.csv')