import numpy as np
from trender import trender
from Draw_Pic import plot3D
from Draw_Pic import draw_photometry

def Phot_Solution(Mag, Err, Obj_mag, Obj_err, Cat_Phot, X_Y_Now, Obj_XY, Obj_Color, view):

    Obj_mag_raw = Obj_mag
    ##calculate sum of errors from catalog and measurements
    Errors = np.sqrt(Cat_Phot[:, 1]**2. + Err**2.)
    
    ##Zero Point
    Zero_Point = np.median(Cat_Phot[:, 0] - Mag)
    Mag = Mag + Zero_Point
    Obj_mag_Z = Obj_mag + Zero_Point
    
    ##delete stars with extremly high error
    Index = np.where(np.abs((Cat_Phot[:, 0] - Mag)/Errors)<3)[0]
    Mag = Mag[Index]
    Cat_Phot = Cat_Phot[Index]
    X_Y_Now = X_Y_Now[Index]

    ##detrending X
    trend, Obj_trend = trender(X_Y_Now[:,0], Mag-Cat_Phot[:, 0], Obj_XY[0][0], 2, view, 'X')
    Mag = Mag-trend
    Obj_mag_X = Obj_mag_Z-Obj_trend
    
    ##detrending Y
    trend, Obj_trend = trender(X_Y_Now[:,1], Mag-Cat_Phot[:, 0], Obj_XY[0][1], 2, view, 'Y')
    Mag = Mag-trend
    Obj_mag_Y = Obj_mag_X-Obj_trend
    
    ##detrending color
    trend, Obj_trend = trender(Cat_Phot[:, 2], Mag-Cat_Phot[:, 0], Obj_Color, 1, view, 'B-V')
    Mag = Mag-trend
    Obj_mag_C = Obj_mag_Y-Obj_trend
    dMag = Mag-Cat_Phot[:, 0]
    print('Median O-C for Mag: %0.3f' % np.median(dMag))
    print('Sigma O-C for Mag: %0.3f' % np.std(dMag))

    ##analize photometry results
    if view == 'yes':
        draw_photometry(X_Y_Now, Mag, Cat_Phot[:, 2], dMag, Obj_XY, Obj_mag_C, Obj_Color)
                        
    ##plot 3D O-C vs XY
    if view == 'yes':
        plot3D(X_Y_Now[:,0], X_Y_Now[:,1], dMag)

    return Obj_mag_raw, Obj_mag_Z, Obj_mag_X, Obj_mag_Y, Obj_mag_C
