class CtrlLogin:
	def __init__(self,login):
		self.__login=login
		self.__bd=BaseDatos()
	def agregarUsuario(self,usuario,contrasena):
		resultado=False
		if self.__bd.cuantosHay("usuario","nick",usuario) == 0:
			id=self.__bd.agregarUsuario(usuario)
			self.__login.setId(id)
			resultado=True
		return resultado

	def autenticarse(self,usuario,contrasena):
		resultado=False
		if self.__bd.cuantosHay("usuario","nick",usuario) != 0:
			id=self.__bd.obtenerIdUsuario(usuario)
			self.__login.setId(id)
			resultado=True
		return resultado

	def validar(self,usuario,contrasena):
		resultado=False
		self.__login.setUsuario(usuario)
		self.__login.setContrasena(contrasena)
		if self.__login.datosCorrectos():
			resultado=True
		return resultado
	def __init__(self,login):

		self.__login=login
		self.__datos=None
		self.__neuroSky = MindwaveDataPointReader()
		self.__neuroSkyDatos=None
		self.__senal=None
		
		self.__bd=BaseDatos()
		self.__evento=None
	def __init__(self):
		self.__path="../files/"

		self.__numero_pruebas=0
		self.__numero_entradas=0
		self.__numero_salidas=0
		self.__string=""
		self.__bd=BaseDatos()
		self.__archivo=None
		self.__url=""
    def __init__(self, parent=None):
        super(Ui_capturar, self).__init__(parent)

        self.login=None
        self.datos=None
        self.root=None
        self.evento=None

        self.bd=BaseDatos()

        self.letras={}
        self.letras= self.bd.obtenerLetras()
        self.letrasAuxiliar = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
        
        self.index=0
        print self.letras
	def __init__(self):
		threading.Thread.__init__(self)
		super(Aplicacion, self).__init__()
		self.__bd=BaseDatos()
		#self.__path="../files/"
		self.__path="files/"
		self.__rna=None
		self.__letras=self.__bd.obtenerLetrasValor()
		
		self.__letra_normalizado={"a":"00000","b":"00001","c":"00010","d":"00011","e":"00100","f":"00101","g":"00110","h":"00111","i":"01000","j":"01001","k":"01010","l":"01011","m":"01100","n":"01101","ñ":"01110","o":"01111","p":"10000","q":"10001","r":"10010","s":"10011","t":"10100","u":"10101","v":"10110","w":"10111","x":"11000","y":"11001","z":"11010"}

		self.__string=""
		self.__datos=None
		self.__evento=None
		self.__interfaz=None
		self.__letra=""
	def __init__(self):
		self.__coneccion=1
		self.__tasa_aprendizaje=0.7
		self.__numero_entradas=0
		self.__numero_salidas=0
		self.__neuronas_capa_oculta=0
		self.__error_deseado=0
		self.__epocas=0
		self.__iteraciones_entre_reporte=1000
		self.__red=None

		self.__error_real=0
		self.__url_prueba=None
		self.__url_guardar=None
		
		self.__path="../files/"
		#self.__path="files/"

		self.__bd=BaseDatos()
		self.__interfaz=None
class CtrlRecolectarDatos:
	def __init__(self,login):

		self.__login=login
		self.__datos=None
		self.__neuroSky = MindwaveDataPointReader()
		self.__neuroSkyDatos=None
		self.__senal=None
		
		self.__bd=BaseDatos()
		self.__evento=None

	def conectarNeuroSky(self):
		data={"delta":-1,"tetha":-1,"lowAlpha":-1,"highAlpha":-1,"lowBeta":-1,"highBeta":-1,"lowGamma":-1,"midGamma":-1,"meditacion":-1,"atencion":-1,"id_letras":self.__datos.getIdLetra(),"id_usuario":self.__login.getId(),"ruido":-1}
		k=i=0
		self.__neuroSky.start()
		self.__neuroSkyDatos=self.__neuroSky.readNextDataPoint()
		if self.__neuroSky.isConnected():
			print("Conectado...")
			self.__datos.setConectado(True)
			self.__senal=None
			while(True):
				self.__neuroSkyDatos=self.__neuroSky.readNextDataPoint()
				if (not self.__neuroSkyDatos.__class__ is RawDataPoint):
					#print(self.__neuroSkyDatos)
					if self.__datos.getEstado():
						data["id_usuario"] =self.__login.getId()
						data["id_letras"]=self.__datos.getIdLetra()
						if (i == 0):
							data["meditacion"]=(float(self.__neuroSkyDatos.meditationValue))
							self.__datos.setMeditacion(float(self.__neuroSkyDatos.meditationValue))

						elif (i == 1):
							data["atencion"]=(float(self.__neuroSkyDatos.attentionValue))
							self.__datos.setAtencion(float(self.__neuroSkyDatos.attentionValue))

						elif (i == 2):
							data["delta"]=(float(self.__neuroSkyDatos.delta))
							self.__datos.setDelta(float(self.__neuroSkyDatos.delta))

							data["tetha"]=(float(self.__neuroSkyDatos.theta))
							self.__datos.setTheta(float(self.__neuroSkyDatos.theta))

							data["lowAlpha"]=(float(self.__neuroSkyDatos.lowAlpha))
							self.__datos.setLowAlpha(float(self.__neuroSkyDatos.lowAlpha))

							data["highAlpha"]=(float(self.__neuroSkyDatos.highAlpha))
							self.__datos.setHighAlpha(float(self.__neuroSkyDatos.lowAlpha))

							data["lowBeta"]=(float(self.__neuroSkyDatos.lowBeta))
							self.__datos.setLowBeta(float(self.__neuroSkyDatos.lowAlpha))

							data["highBeta"]=(float(self.__neuroSkyDatos.highBeta))
							self.__datos.setHighBeta(float(self.__neuroSkyDatos.lowAlpha))

							data["lowGamma"]=(float(self.__neuroSkyDatos.lowGamma))
							self.__datos.setLowGamma(float(self.__neuroSkyDatos.lowGamma))

							data["midGamma"]=(float(self.__neuroSkyDatos.midGamma))
							self.__datos.setMidGamma(float(self.__neuroSkyDatos.midGamma))
						elif (i == 3):

							self.__senal=float(self.__neuroSkyDatos.amountOfNoise)
							self.__datos.setRuido(self.__senal)
							self.__datos.setEstado(False)
							data["ruido"]=self.__senal
							#Insertando el valor de las ondas en la bd
							if not self.__datos.getProbando():
								self.__bd.insertarStreamOndas(data)
							print("*"*30)
							print(data)
							print("*"*30)
							self.__evento.set()
							if (self.__senal == 0):
								print(data)
							else:
								print("WARNING [hay mucho ruido]: %s")%self.__senal
						else:
							i = 0
							#data = []

							data["meditacion"]=float(self.__neuroSkyDatos.meditationValue)
						i = i + 1;
						#if k==3*50:
						#	break
						#k=k+1
		else:
			print("No se pudo conectar intente de nuevo...")
			self.__leerDatos.setConectado(False)
		print(data)
	def setDatos(self,datos):
		self.__datos=datos
	def setEvento(self,evento):
		self.__evento=evento
from escribirArchivo import EscribirArchivo
import inspect, sys, os
sys.path.append("../model")
from baseDatos import BaseDatos

auxiliar=[]



e=EscribirArchivo()
e.setUrl("prueba_gamma.data")
e.setNumeroEntradas(2)
e.setNumeroSalidas(1)
e.escribirEnArchivoParaProbarRedNeuronalGamma()

bd=BaseDatos()
#primer elemento: # de neuronas
#segundo elemento: error
#tercer elemento: url del archivo de ese entrenamiento
print bd.obtenerErroresMenoresDeEntrenamientoGamma()[0][2]


errores=bd.obtenerErroresMenoresDeEntrenamiento()
for k in range(len(errores)):
	ann = libfann.neural_net()
	ann.create_from_file("../files/"+errores[k][2])
	ann.reset_MSE()
	
	test_data = libfann.training_data()
	test_data.read_train_from_file("../files/prueba.data")
	entradas=test_data.get_input()
class CtrlEntrenarRNANormalizado:
	def __init__(self):
		self.__coneccion=1
		self.__tasa_aprendizaje=0.7
		self.__numero_entradas=0
		self.__numero_salidas=0
		self.__neuronas_capa_oculta=0
		self.__error_deseado=0
		self.__epocas=0
		self.__iteraciones_entre_reporte=1000
		self.__red=None

		self.__error_real=0
		self.__url_prueba=None
		self.__url_guardar=None
		
		self.__path="../files/"
		#self.__path="files/"

		self.__bd=BaseDatos()
		self.__interfaz=None
	def entrenar(self):
		print("Entrenando ...")		
		self.__red=libfann.neural_net()
		self.__red.create_sparse_array(self.__coneccion,(self.__numero_entradas,self.__neuronas_capa_oculta,self.__numero_salidas))
		self.__red.set_learning_rate(self.__tasa_aprendizaje)
		self.__red.set_activation_function_hidden(libfann.SIGMOID_SYMMETRIC_STEPWISE)
		self.__red.set_activation_function_output(libfann.SIGMOID_SYMMETRIC_STEPWISE)
		self.__red.train_on_file(self.__path+self.__url_prueba, self.__epocas,self.__iteraciones_entre_reporte, self.__error_deseado)
		self.__error_real=self.__red.get_MSE()
		
		datos={"numerodeneuronas":self.__neuronas_capa_oculta,"error":self.__error_real,"tipo":"normalizado"}
		id=self.__bd.agregarEntrenamiento(datos)
		
		print("id: %s"%(str(id)))
		self.__url_guardar="mizael_rna%s.net"%(id)
		self.__bd.actualizarRegistroEntrenamiento(self.__url_guardar,id)
		self.__red.save(self.__path + self.__url_guardar)
		if self.__interfaz != None:
			self.__interfaz.lineEdit_4.setText("%s"%str(self.__error_real))
	def entrenarGamma(self):
		print("Entrenando Gamma...")		
		self.__red=libfann.neural_net()
		self.__red.create_sparse_array(self.__coneccion,(self.__numero_entradas,self.__neuronas_capa_oculta,self.__numero_salidas))
		self.__red.set_learning_rate(self.__tasa_aprendizaje)
		self.__red.set_activation_function_hidden(libfann.SIGMOID_SYMMETRIC_STEPWISE)
		self.__red.set_activation_function_output(libfann.LINEAR)
		self.__red.train_on_file(self.__path+self.__url_prueba, self.__epocas,self.__iteraciones_entre_reporte, self.__error_deseado)
		self.__error_real=self.__red.get_MSE()
		
		datos={"numerodeneuronas":self.__neuronas_capa_oculta,"error":self.__error_real,"tipo":"gamma"}
		id=self.__bd.agregarEntrenamiento(datos)
		
		print("id: %s"%(str(id)))
		self.__url_guardar="mizael_rna%s.net"%(id)
		self.__bd.actualizarRegistroEntrenamiento(self.__url_guardar,id)
		self.__red.save(self.__path + self.__url_guardar)
		if self.__interfaz != None:
			self.__interfaz.lineEdit_4.setText("%s"%str(self.__error_real))

	def setConeccion(self,conexion):
		self.__coneccion=conexion
	def setTasaAprendizaje(self,tasa_aprendizaje):
		self.__tasa_aprendizaje=tasa_aprendizaje
	def setNumeroEntradas(self,numero_entradas):
		self.__numero_entradas=numero_entradas
	def setNumeroSalidas(self,numero_salidas):
		self.__numero_salidas=numero_salidas
	def setNeuronasCapaOculta(self,neuronas_capa_oculta):
		self.__neuronas_capa_oculta=neuronas_capa_oculta
	def setErrorDeseado(self,error_deseado):
		self.__error_deseado=error_deseado
	def setEpocas(self,epocas):
		self.__epocas=epocas
	def setIteracionesEntreReporte(self,iteraciones_entre_reporte):
		self.__iteraciones_entre_reporte=iteraciones_entre_reporte
	def setErrorReal(self,error_real):
		self.__error_real=error_real
	def setUrlPrueba(self,url_prueba):
		self.__url_prueba=url_prueba
	def setUrlGuardar(self,url_guardar):
		self.__url_guardar=url_guardar
	def setInterfaz(self,interfaz):
		self.__interfaz=interfaz


	def getConeccion(self):
		return self.__coneccion
	def getTasaAprendizaje(self):
		return self.__tasa_aprendizaje
	def getNumeroEntradas(self):
		return self.__numero_entradas
	def getNumeroSalidas(self):
		return self.__numero_salidas
	def getNeuronasCapaOculta(self):
		return self.__neuronas_capa_oculta
	def getErrorDeseado(self):
		return self.__error_deseado
	def getEpocas(self):
		return self.__epocas
	def getIteracionesEntreReporte(self):
		return self.__iteraciones_entre_reporte
	def getErrorReal(self):
		return self.__error_real
	def getUrlPrueba(self):
		return self.__url_prueba
	def getUrlGuardar(self):
		return self.__url_guardar
	def getInterfaz(self):
		return self.__interfaz
class Ui_capturar(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Ui_capturar, self).__init__(parent)

        self.login=None
        self.datos=None
        self.root=None
        self.evento=None

        self.bd=BaseDatos()

        self.letras={}
        self.letras= self.bd.obtenerLetras()
        self.letrasAuxiliar = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
        
        self.index=0
        print self.letras
        #print self.letras["\xf1"]
        #print self.letras["a"]
    def setupUi(self, Form):
        self.root=Form
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(654, 466)

        screen = QtGui.QDesktopWidget().screenGeometry()
        mysize = Form.geometry()
        hpos = ( screen.width() - mysize.width() ) / 2
        vpos = ( screen.height() - mysize.height() ) / 2
        Form.move(hpos, vpos)

        self.label = QtGui.QLabel(Form)
        #self.label.setGeometry(QtCore.QRect(150, 10, 351, 321))
        self.label.setGeometry(QtCore.QRect(150, 10, 400, 351))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setPointSize(360)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName(_fromUtf8("label"))
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(240, 390, 161, 51))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton_2 = QtGui.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(240, 390, 161, 51))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))


        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

        self.pushButton_2.setVisible(False)
        self.pushButton.clicked.connect(self.iniciarCapturarRecoleccion)

        self.pushButton_2.clicked.connect(self.capturar)
        

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.label.setText(_translate("Form", "c:", None))
        self.pushButton.setText(_translate("Form", "INICIAR RECOLECCION", None))
        self.pushButton_2.setText(_translate("Form", "CAPTURAR", None))

    def iniciarCapturarRecoleccion(self):
        font = QtGui.QFont()
        font.setPointSize(360)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.pushButton.setVisible(False)
        self.pushButton_2.setVisible(True)
        self.index=0
        self.label.setText(self.letrasAuxiliar[self.index].upper().decode("utf-8"))
        #self.index=self.index + 1

    def capturar(self):
        self.intercambiarLetra()
    def intercambiarLetra(self):
        if self.index < len(self.letras):
            if self.letrasAuxiliar[self.index]=='ñ':
                self.datos.setIdLetra(self.letras["\xf1"])
                print "Index: %s, Id: %s,Letra: ñ"%(str(self.index),str(self.letras["\xf1"]))
            else:
                print "Index: %s, Id: %s,Letra: %s"%(str(self.index),str(self.letras[self.letrasAuxiliar[self.index]]),self.letrasAuxiliar[self.index])
                self.datos.setIdLetra(self.letras[self.letrasAuxiliar[self.index]])
            if self.index!=len(self.letras)-1: 
                self.label.setText(self.letrasAuxiliar[self.index+1].upper().decode("utf-8"))
            else:
                self.finCapturarDatos()
            print "Id letra Datos: %s"%self.datos.getIdLetra()
            self.index=self.index + 1
            self.datos.setEstado(True)
        else:
            self.finCapturarDatos()
    def finCapturarDatos(self):
        font = QtGui.QFont()
        font.setPointSize(150)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setText("FIN")
        self.pushButton_2.setText("Datos Capturados")
        self.reiniciarCaptura()
    def reiniciarCaptura(self):
        self.pushButton.setVisible(True)
        self.pushButton_2.setVisible(False)
    def setLogin(self,login):
        self.login=login
    def setDatos(self,datos):
        self.datos=datos
    def setEvento(self,evento):
        self.evento=evento
from escribirArchivo import EscribirArchivo
import inspect, sys, os
sys.path.append("../model")
from baseDatos import BaseDatos

auxiliar=[]



np=EscribirArchivo()
np.setUrl("prueba_normalizado.data")
np.setNumeroEntradas(8)
np.setNumeroSalidas(5)
np.escribirEnArchivoParaProbarRedNeuronalNormalizados()

bd=BaseDatos()
#primer elemento: # de neuronas
#segundo elemento: error
#tercer elemento: url del archivo de ese entrenamiento
print bd.obtenerErroresMenoresDeEntrenamientoNormalizado()[0][2]


errores=bd.obtenerErroresMenoresDeEntrenamientoNormalizado()
for k in range(len(errores)):
	ann = libfann.neural_net()
	ann.create_from_file("../files/"+errores[k][2])
	ann.reset_MSE()
	
	test_data = libfann.training_data()
	test_data.read_train_from_file("../files/prueba_normalizado.data")
	entradas=test_data.get_input()
	def __init__(self,login):
		self.__login=login
		self.__bd=BaseDatos()
class Aplicacion(QtCore.QObject,threading.Thread):
	senal = QtCore.pyqtSignal(str)
	def __init__(self):
		threading.Thread.__init__(self)
		super(Aplicacion, self).__init__()
		self.__bd=BaseDatos()
		#self.__path="../files/"
		self.__path="files/"
		self.__rna=None
		self.__letras=self.__bd.obtenerLetrasValor()
		
		self.__letra_normalizado={"a":"00000","b":"00001","c":"00010","d":"00011","e":"00100","f":"00101","g":"00110","h":"00111","i":"01000","j":"01001","k":"01010","l":"01011","m":"01100","n":"01101","ñ":"01110","o":"01111","p":"10000","q":"10001","r":"10010","s":"10011","t":"10100","u":"10101","v":"10110","w":"10111","x":"11000","y":"11001","z":"11010"}

		self.__string=""
		self.__datos=None
		self.__evento=None
		self.__interfaz=None
		self.__letra=""
	@QtCore.pyqtSlot()
	def activarSenal(self):
		self.senal.emit("%s"%self.__letra)

	def run(self):
		print "Hilo [Probando Aplicacion]"		
		while True:
			if self.__datos.getProbando():
				self.__evento.wait()

				deltaMax=3473322.0
				thetaMax=3072570.0
				lowAlphaMax=809805.0
				highAlphaMax=762007.0
				lowBetaMax=643499.0
				highBetaMax=679478.0
				lowGammaMax=456807.0
				midGammaMax=433577.0

				deltaMin=3.0
				thetaMin=3.0
				lowAlphaMin=0.0
				highAlphaMin=0.0
				lowBetaMin=0.0
				highBetaMin=1.0
				lowGammaMin=1.0
				midGammaMin=1.0
				
				delta=(self.__datos.getDelta() - deltaMin)/(deltaMax - deltaMin)
				theta=(self.__datos.getTheta() - thetaMin)/(thetaMax - thetaMin)
				lowAlpha=(self.__datos.getLowAlpha() - lowAlphaMin)/(lowAlphaMax - lowAlphaMin)
				highAlpha=(self.__datos.getHighAlpha() - highAlphaMin)/(highAlphaMax - highAlphaMin)
				lowBeta=(self.__datos.getLowBeta() - lowBetaMin)/(lowBetaMax - lowBetaMin)
				highBeta=(self.__datos.getHighBeta() - highBetaMin)/(highBetaMax - highBetaMin)
				lowGamma=(self.__datos.getLowGamma() - lowGammaMin)/(lowGammaMax - lowGammaMin)
				midGamma=(self.__datos.getMidGamma() - midGammaMin)/(midGammaMax - midGammaMin)


				ondas=[delta,theta,lowAlpha,highAlpha,lowBeta,highBeta,lowGamma,midGamma]
				
				self.__letra=self.convertirSenalALetra(ondas)
				self.__string=self.__string + self.__letra
				print "*"*10
				print self.__string
				self.__datos.setEstado(True)
				self.activarSenal()
				time.sleep(0.3)
				self.__evento.clear()
			else:
				self.__string=""
				self.__datos.setString(self.__string)
	def convertirSenalALetra(self,datos):
		self.__ruta=self.__bd.obtenerArchivoErrorMinimoNormalizado()
		self.__rna= libfann.neural_net()
		self.__rna.create_from_file(self.__path+self.__ruta)
		resultado = self.__rna.run(datos)
		#print (self.__letras)
		#return
		#print resultado
		#return
		resultado[0]=1 if resultado[0]>0.0505 else 0
		resultado[1]=1 if resultado[1]>0.105 else 0
		resultado[2]=1 if resultado[2]>0.105 else 0
		resultado[3]=1 if resultado[3]>0.115 else 0
		resultado[4]=1 if resultado[4]>0.09 else 0
		resultado=str(resultado[0])+str(resultado[1])+str(resultado[2])+str(resultado[3])+str(resultado[4])
		#resultado="".join(bin(int(14))[2:].zfill(5))
		#print resultado
		#resultado = round(resultado)
		letraCorrecta=''
		auxBool=False
		for letra, valor in self.__letras.items():
			#print "".join(bin(int(valor))[2:].zfill(5))==resultado
			#print valor;
			#if valor==resultado:
			if "".join(bin(int(valor))[2:].zfill(5))==resultado:
				letraCorrecta=letra
				auxBool=True
				break
		if not auxBool:
			random=randint(0,26)
			random="".join(bin(int(random))[2:].zfill(5))
			#print "Random ==>"+str(random)
			for letra, valor in self.__letras.items():
				if "".join(bin(int(valor))[2:].zfill(5))==random:
					letraCorrecta=letra
					break
		return letraCorrecta
	
	def setDatos(self,datos):
		self.__datos=datos
	def setEvento(self,evento):
		self.__evento=evento
	def setInterfaz(self,interfaz):
		self.__interfaz=interfaz
class EscribirArchivo:
	def __init__(self):
		self.__path="../files/"

		self.__numero_pruebas=0
		self.__numero_entradas=0
		self.__numero_salidas=0
		self.__string=""
		self.__bd=BaseDatos()
		self.__archivo=None
		self.__url=""
		
	def prepararDatos(self):
		registros=self.__bd.obtenerRegistrosOndas()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8])
			else:
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s\n"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8])
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
	def prepararDatosNormalizados(self):
		registros=self.__bd.obtenerRegistrosOndasNormalizados()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"
				#bin(int(i[8]))[2:].zfill(5)
				#bin(int(i))[2:].zfill(5)
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]," ".join(bin(int(i[8]))[2:].zfill(5)))
			else:
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s\n"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]," ".join(bin(int(i[8]))[2:].zfill(5)))
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
	def prepararDatosParaProbarRedNeuronal(self):
		registros=self.__bd.obtenerRegistrosOndasPruebaDeLaRedNeuronal()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8])
			else:
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s\n"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8])
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
	def prepararDatosParaProbarRedNeuronalNormalizados(self):
		registros=self.__bd.obtenerRegistrosOndasPruebaDeLaRedNeuronalNormalizados()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]," ".join(bin(int(i[8]))[2:].zfill(5)))
			else:
				auxiliar = auxiliar + "%s %s %s %s %s %s %s %s\n%s\n"%(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]," ".join(bin(int(i[8]))[2:].zfill(5)))
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
	def prepararDatosParaProbarRedNeuronalGamma(self):
		registros=self.__bd.obtenerRegistrosOndasPruebaDeLaRedNeuronalGamma()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"
				auxiliar = auxiliar + "%s %s\n%s"%(i[0],i[1],i[2])
			else:
				auxiliar = auxiliar + "%s %s\n%s\n"%(i[0],i[1],i[2])
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
	def prepararDatosGamma(self):
		print "DATOS [GAMMA]..."
		registros=self.__bd.obtenerRegistrosOndasGamma()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print registros;
		print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print i
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"  
				auxiliar = auxiliar + "%s %s\n%s"%(i[0],i[1],i[2])
			else:
				auxiliar = auxiliar + "%s %s\n%s\n"%(i[0],i[1],i[2])
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
		#print self.__string;
	def prepararDatosGammaNormalizado(self):
		print "DATOS [GAMMA]..."
		registros=self.__bd.obtenerRegistrosOndasGammaNormalizado()
		self.__numero_pruebas=len(registros)
		auxiliar=""
		#print registros;
		print "LOngitud: %s"%str(len(registros))
		#return;
		contador=0;
		for i in registros:
			#print i
			#print contador
			if contador==len(registros)-1:
				#print "ultimo"  
				auxiliar = auxiliar + "%s %s\n%s"%(i[0],i[1],i[2])
			else:
				auxiliar = auxiliar + "%s %s\n%s\n"%(i[0],i[1],i[2])
			contador=contador+1
		print "Longitud de registros: %s"%str(len(registros))
		self.__string="%s %s %s\n%s"%(self.__numero_pruebas,self.__numero_entradas,self.__numero_salidas,auxiliar)
		#print self.__string;

	def escribirEnArchivo(self):
		self.prepararDatos()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def escribirEnArchivoNormalizado(self):
		self.prepararDatosNormalizados()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def escribirEnArchivoParaProbarRedNeuronal(self):
		self.prepararDatosParaProbarRedNeuronal()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def escribirEnArchivoParaProbarRedNeuronalNormalizados(self):
		self.prepararDatosParaProbarRedNeuronalNormalizados()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def escribirEnArchivoParaProbarRedNeuronalGamma(self):
		self.prepararDatosParaProbarRedNeuronalGamma()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def escribirEnArchivoGamma(self):
		self.prepararDatosGamma()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def escribirEnArchivoGammaNormalizado(self):
		self.prepararDatosGammaNormalizado()
		self.__archivo=open( self.__path+self.__url,"w")
		self.__archivo.write(self.__string)
		self.__archivo.close()
	def setNumeroPruebas(self,numero_pruebas):
		self.__numero_pruebas=numero_pruebas
	def setNumeroEntradas(self,numero_entradas):
		self.__numero_entradas=numero_entradas
	def setNumeroSalidas(self,numero_salidas):
		self.__numero_salidas=numero_salidas
	def setUrl(self,url):
		self.__url=url

	def getNumeroPruebas(self):
		return self.__numero_pruebas
	def getNumeroEntradas(self):
		return self.__numero_entradas
	def getNumeroSalidas(self):
		return self.__numero_salidas
	def getUrl(self):
		return self.__url