%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt 
import pandas as pd

from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl

#Lectura del archivo csv
tr=pd.read_csv('survey-syn.csv')

tr.describe()

type(tr) 

"""
Explanation: Cálculo de la Profundidad Total Desarrollada (PT)
Este ejercicio tiene como objetivo calcular la longitud total de la trayectoria de un pozo hipotético (Pozo Zanahoria). La idea es conocer la filosofía de trabajo de la biblioteca Pandas de Python así como adquirir nociones básicas de graficación 2D y 3D. Cualquier aportación, ¡bienvenida!
End of explanation
"""


################################
f1 = plt.figure(figsize = [15,10])
plt.style.use('bmh')

#Plano XZ

fig1 = f1.add_axes([0, 0, 0.2,0.7]) 
fig1.plot(tr.XOFFSET, tr.TVD,'r', alpha=1, lw=3)
fig1.set_title('Plano XZ', fontsize='14')
fig1.set_ylabel('Profundidad ' + '[m]', fontsize = '11' )
fig1.set_xlabel('Desplazamiento en X '+ '[m]', fontsize = '11')
fig1.set_yticks(np.linspace (min(tr.TVD),max(tr.TVD),15) )
fig1.set_xticks( np.linspace (min(tr.XOFFSET), 800, 5))
fig1.invert_yaxis()
fig1.grid(True, alpha=1)

#Plano YZ

fig2 = f1.add_axes([0.25, 0, 0.2,0.7]) 
fig2.plot(tr.YOFFSET, tr.TVD,'r', alpha=1, lw=3)
fig2.set_title('Plano YZ', fontsize='14')
fig2.set_xlabel('Desplazamiento en Y '+ '[m]', fontsize = '11')
fig2.set_yticks(np.linspace (min(tr.TVD),max(tr.TVD),15) )
fig2.set_xticks( np.linspace (min(tr.XOFFSET), 800, 5))
fig2.invert_yaxis()
fig2.grid(True, alpha=1)

#Plano XY

fig3 = f1.add_axes([0.50, 0.2, 0.25,0.3]) 
fig3.plot(tr.YOFFSET, tr.XOFFSET,'r', alpha=1, lw=3)
fig3.set_title('Plano XY', fontsize='14')
fig3.set_ylabel('Desplazamiento en Y ' + '[m]', fontsize = '11' )
fig3.set_xlabel('Desplazamiento en X '+ '[m]', fontsize = '11')
fig3.grid(True, alpha=1)

plt.show()

"""
Explanation: Gráfica 2D
End of explanation
"""


fig = plt.figure(figsize=[8, 14])
mpl.rcParams['legend.fontsize'] = 10
fig4 = fig.gca(projection='3d')

fig4.plot(tr.XOFFSET/1000,tr.YOFFSET/1000,tr.TVD/1000,  'r', lw=4)
fig4.set_title("Pozo Zanahoria \n Coordendas XY-Desplazamiento", color= "K",fontsize= 12)
fig4.invert_zaxis()
fig4.invert_xaxis()
fig4.invert_yaxis()
fig4.set_xlabel('X Desplazamiento [km]' , fontsize=11)
fig4.set_ylabel('Y desplazamiento [km]' , fontsize=11)
fig4.set_zlabel('Profundidad [km]', fontsize=11)

fig4.view_init(elev=5, azim=-125)

#plt.savefig('survey3D.png', transparent=True, dpi=600, bbox_inches="tight" )


plt.show()

"""
Explanation: Gráfica 3D
End of explanation
"""


xsup=300100 
ysup=5000100

XABS = xsup + tr.XOFFSET
YABS = ysup + tr.YOFFSET

"""
Explanation: Cálculo de los valores absolutos de las coordenas X y Y
Las coordenadas de superficie son (hipotéticas): X-300100 Y-5000100
End of explanation
"""


delta_xoffset = np.diff(tr.XOFFSET) #Diferencia del desplazamiento de X-OFFSET
delta_yoffset = np.diff(tr.YOFFSET) #Diferencia del desplazamiento de Y-OFFSET
deltaz_tvd = np.diff(tr.TVD) #Diferencia de la TVD

delta_xy=np.sqrt(pow(delta_xoffset, 2)+pow(delta_yoffset,2)) #Hipotenusa en el plano XY
delta_z_xy = np.sqrt(pow(delta_xy,2)+pow(deltaz_tvd,2)) #Hipotenusa en el plano Z-XY

MD = np.round (np.cumsum(delta_z_xy),3)   #Cálculo de la suma acumulada de las diferencias en el plano Z-XY

"""
Explanation: Cálculo de la profundidad total medida (MD, measure depth)
Cálculo del desplazamiento en el plano XY
A través del teorema de Pitágoras calculamos la hipotenusa del plano horizontal (XY) y el plano vertical.
End of explanation
"""


tr_md = tr.iloc[ 1 : 112 , :]

print (len(tr_md)) ; print (len(MD))

"""
Explanation: Escalar el "dataframe" tr
End of explanation
"""


tr_tot = tr_md.assign(XABS=XABS, YABS=YABS, MD=MD)

print(tr_tot)

"""
Explanation: Integrar los datos calculados en la tabla de datos original
End of explanation
"""


tr_tot.to_csv('Ejercicio-MD.csv', index=False, header=True)

"""
Explanation: Exportar la tabla en formato CSV
End of explanation
"""


