def read_phot_files(file):

    parts = re.split('\.',file)

    if len(parts) == 2:
        extension = '.%s' %(parts[1])
    elif len(parts) == 3:
        extension = '.%s.%s' %(parts[1],parts[2])
        
    if extension == '.prob':
        #if re.search('and09',file):
        #    pdb.set_trace()
        # ID X Y RA DEC D D_err M M_err T T_err Chi Sharp Flag Stell r l b EBmV EMmT EMmD A_m gprob gerr xerr serr
        ra, dec, gprob = np.genfromtxt(file, usecols = (3,4,22), unpack=True)
        good = (gprob > 0.5) & (np.isfinite(gprob))

        return ra[good], dec[good]
        
    elif (extension == '.RICNgood') | (extension == '.RICNradec'):

        rh,rm,rs, dh,dm,ds = np.genfromtxt(file, usecols = (1,2,3,4,5,6), unpack=True)
        ra_hms = ['%02d:%02d:%5.2f' %(r1,r2,r3) for r1,r2,r3 in zip(rh,rm,rs)]
        dec_hms = ['%02d:%02d:%5.2f' %(d1,d2,d3) for d1,d2,d3 in zip(dh,dm,ds)]

        ra = np.array([hms2deg(r,d)[0] for r,d in zip(ra_hms, dec_hms)])
        dec = np.array([hms2deg(r,d)[1] for r,d in zip(ra_hms, dec_hms)])

        return ra, dec
    
    elif extension == '.selVI':

        ra,dec = np.genfromtxt(file, usecols=(1,2), unpack=True)
        
        return ra, dec

    elif extension == '.vimag.fits':

        hdu = fits.open(file)
        data = hdu[1].data

        return data.RA1, data.DEC1

    elif extension == '.rawcalib':

        ra_hms, dec_hms = np.genfromtxt(file, usecols = (1,2), dtype=str, unpack=True)

        ra = np.array([hms2deg(r,d)[0] for r,d in zip(ra_hms, dec_hms)])
        dec = np.array([hms2deg(r,d)[1] for r,d in zip(ra_hms, dec_hms)])

        return ra, dec
    
    else:
        raise AttributeError('Unrecognized extension')
def matchDUSTiNGS(type, ra, dec, masks):

    if type == 'dsph':
        table = np.genfromtxt('/Users/khamren/M31_Research/splash_data/DUSTiNGS/dsph_goodcat.tsv', delimiter=';', dtype=str, filling_values='9999')
    elif type == 'de':
        table =  np.genfromtxt('/Users/khamren/M31_Research/splash_data/DUSTiNGS/ngc_goodcat.tsv', delimiter=';', dtype=str, filling_values='9999')
    else:
        raise AttributeError('Input type should be dsph or de')

    dust_fields = np.array([convert_to_mask(m) for m in table[:,0]])
    dust_ra = np.array([hms2deg(':'.join(r.strip().split()),':'.join(d.strip().split()))[0]
                        for r,d in zip(table[:,1],table[:,2])])
    dust_dec = np.array([hms2deg(':'.join(r.strip().split()),':'.join(d.strip().split()))[1]
                         for r,d in zip(table[:,1],table[:,2])])

    n = len(ra)
    m36 = np.empty(n)
    em36 = np.empty(n)
    m45 = np.empty(n)
    em45 = np.empty(n)

    splash_fields = np.array([re.split('_',m)[0].lower() for m in masks])
    
    for i,r,d,m in zip(range(n),ra, dec,splash_fields):

        if m == 'd7bi':
            m = 'd7'
            
        dist = np.array([3600*np.sqrt(((r-rv)*cosdg(d))**2 + (d-dv)**2)
                         for rv, dv in zip(dust_ra[dust_fields == m], dust_dec[dust_fields == m])])

        try:
            if (len(dist) == 0) or (min(dist) > 0.5):
                m36[i] = np.nan
                em36[i] = np.nan
                m45[i] = np.nan
                em45[i] = np.nan
            
            else:
                j = np.argwhere(dist == min(dist))[0][0]

                try:
                    m36[i] =(table[j,3].astype(float))
                    em36[i] =(table[j,4].astype(float))
                    m45[i] =(table[j,9].astype(float))
                    em45[i] =(table[j,10].astype(float))
                except:
                    try:
                        m36[i] =(table[j,5].astype(float))
                        em36[i] =(table[j,6].astype(float)) 
                        m45[i] =(table[j,11].astype(float))
                        em45[i] =(table[j,12].astype(float))
                    except:
                        try:
                            m36[i] =(table[j,7].astype(float))
                            em36[i] =(table[j,8].astype(float))
                            m45[i] =(table[j,13].astype(float))
                            em45[i] =(table[j,14].astype(float))
                        except:
                            m36[i] = np.nan
                            em36[i] = np.nan
                            m45[i] = np.nan
                            em45[i] = np.nan    
        except:
            pdb.set_trace()
            

    return np.array(m36), np.array(em36), np.array(m45), np.array(em45)