<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Tarea 04
Step1:  Lectura y grafica de los datos de 'TSI2.tx'
Step2:  Transformada de fourier de los datos
Step3:  Análisis
De la grafica de amplitudes, conforme la frecuencia  se aleja del cero, se observa un maximo aproximadamente en $f\approx0.09$, el cual siguiendo la formula $$T=\frac{1}{f}$$
Se obtiene un periodo de $T\approx 11.11 [years]$ el cual es concordante con el ciclo de actividad solar medido por medio de las manchas solares, el cual tiene una duracion de aproximadamente 11 años.
Mejore la resolución en el espectro de frecuencias
<ASSISTANT_TASK:>
Python Code:
import numpy as np
import matplotlib
import pylab as plt
import scipy.misc as pim
from scipy import stats
% matplotlib inline
font = {'weight' : 'bold',
        'size'   : 12}
matplotlib.rc('font', **font)
Explanation: Tarea 04: Análisis de Fourier - ciclos solares
Alejando Mesa y Yennifer Angarita
Ciclos del Sol
Procedimiento:
Lea el archivo TSI2.txt y genere una matriz de datos. 
Grafique los datos. La primera columna corresponde a años, la segunda a W/m^2.
Realice la TF de los datos. Grafique la amplitud.
Identifique la o las frecuencias más importantes. No incluya las frecuencias cercanas a cero.
Determine el o los ciclos principales del Sol en años.
Mejore la resolución en el espectro de frecuencias y mire si aparece nueva información.
Saque conclusiones de los resultados.
End of explanation
x,y = np.loadtxt('TSI2.txt', usecols=[0,1], dtype='float', unpack='True',delimiter=None)
plt.figure(figsize=(16,8))
plt.plot(x,y,marker='.',color='blue',linewidth=1,markersize=6)
plt.title('Radiation cycles of the Sun', fontsize=24)
plt.xlabel('years', fontsize=18)
plt.ylabel('Radiation [w/m²]', fontsize=18)
plt.grid()
Explanation: Lectura y grafica de los datos de 'TSI2.tx'
End of explanation
dy = 1
fty = np.fft.fftshift(np.fft.fft(np.fft.fftshift(y)))*dy
v = np.arange(-1/(2*dy),1/(2*dy),1/(dy*x.size))
ti = 0
tf =0.5
plt.figure(figsize=(16,8))
plt.plot(v,abs(fty)**(1/4),marker='.',color='blue',linewidth=1,markersize=6)
plt.plot((0, 0.5), (2, 2), 'r-')
plt.title('FT Radiation cycles of the Sun', fontsize=24)
plt.xlabel('Freq.', fontsize=18)
plt.ylabel('Amp', fontsize=18)
plt.xlim(ti,tf)
plt.grid()
Explanation: Transformada de fourier de los datos
End of explanation
yinv=y[::-1] #Invertir el orden de los datos del arreglo
yinv=yinv[1:]  #Eliminar primer elemento del nuevo arreglo
yinv=yinv[:-1] #Eliminar ultimo elemento del nuevo arreglo
yf=[] 
k=0
while k<50: #Ciclo while para meter en un arreglo los valores de la señal, la inversa de la señal en el tiempo el numero que deseemos repertila
    for i in range(0,len(y)):
        yf.append(y[i])#Señal
    #print len(data3)
    for i in range(0,len(yinv)):#Señal invertida en el tiempo
        yf.append(yinv[i])
    k+=1
    
dy = 1
t1 = np.arange(0,len(yf),dy)
fty2 = np.fft.fftshift(np.fft.fft(np.fft.fftshift(yf)))*dy
v = np.arange(-1/(2*dy),1/(2*dy),1/(dy*t1.size))
ti = 0
tf =0.1
plt.figure(figsize=(16,8))
plt.plot(v,abs(fty2)**(1/4),marker='.',color='blue',linewidth=1,markersize=6)
plt.plot((0, 0.1), (5.5, 5.5), 'r-')
plt.title('More Resolution FT Radiation cycles of the Sun', fontsize=24)
plt.xlabel('Freq.', fontsize=18)
plt.ylabel('Amp', fontsize=18)
plt.xlim(ti,tf)
plt.grid()
Explanation: Análisis
De la grafica de amplitudes, conforme la frecuencia  se aleja del cero, se observa un maximo aproximadamente en $f\approx0.09$, el cual siguiendo la formula $$T=\frac{1}{f}$$
Se obtiene un periodo de $T\approx 11.11 [years]$ el cual es concordante con el ciclo de actividad solar medido por medio de las manchas solares, el cual tiene una duracion de aproximadamente 11 años.
Mejore la resolución en el espectro de frecuencias
End of explanation
<END_TASK>