def testChooseFileWithError(self): def noconsole(x): pass rinterface.set_writeconsole( noconsole) # reverted by the tearDown method def f(prompt): raise Exception("Doesn't work.") rinterface.set_choosefile(f) tmp_file = tempfile.NamedTemporaryFile() stderr = sys.stderr sys.stderr = tmp_file try: res = rinterface.baseenv["file.choose"]() except rinterface.RRuntimeError: pass except Exception as e: sys.stderr = stderr raise e sys.stderr = stderr tmp_file.flush() tmp_file.seek(0) self.assertEqual("Doesn't work.", str(sys.last_value))
def accept(self): print ("*Accept*") variable = str(self.dialogUi.cb_discretizar_1.currentText()) factor = str(self.dialogUi.cb_discretizar_2.currentText()) if self.dialogUi.rb_cuartil.isChecked(): ntiles = "4" elif self.dialogUi.rb_decil.isChecked(): ntiles = "10" elif self.dialogUi.rb_percentil.isChecked(): ntiles = "100" else: self.openAgregadoDialog() if (factor == "Sin factor"): comando = "datos.discretizados=discretiza.variable.fnc(datos, variable='" + variable + "',ntiles=" + ntiles + ")" else: comando = "datos.discretizados=discretiza.variable.fnc(datos, variable='" + variable + "', que.factor='" + factor + "',ntiles=" + ntiles + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def acceptMediacion(self): print("*Accept*") vd = str(self.dialogUi.cb_dependiente.currentText()) vi = str(self.dialogUi.cb_independiente.currentText()) m = str(self.dialogUi.cb_moduladora.currentText()) covariante = "c('" covariante = covariante + "', '".join(self.listMulti) covariante = covariante + "')" #tipo mediacion if self.dialogUi.rb_basic.isChecked(): mediacion = "list(vd='" + vd + "',vi='" + vi + "',m='" + m + "')" comando = "analisis.mediacion.fnc(datos, " + mediacion + ")" elif self.dialogUi.rb_interac.isChecked(): mediacion = "list(vd='" + vd + "',vi='" + vi + "',m='" + m + "')" comando = "analisis.mediacion.fnc(datos, " + mediacion + ", interaccion.vi.m=T)" elif self.dialogUi.rb_covariante.isChecked(): mediacion = "list(vd='" + vd + "',vi='" + vi + "',m='" + m + "', covariante=" + covariante + ")" comando = "analisis.mediacion.fnc(datos, " + mediacion + ")" else: self.openMediacion() #ejecucion self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x.decode("utf8")) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado.decode("utf8"))) rinterface.set_writeconsole(rinterface.consolePrint)
def openDiscretizar(self): # Abro el dialogo self.dialogUi = self.d_discretizar self.dialogUi.setWindowTitle("Discretizar") self.dialogUi.show() # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_discretizar_1.clear() self.dialogUi.cb_discretizar_2.clear() self.dialogUi.cb_discretizar_2.addItem(str("Sin factor")) for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_discretizar_1.addItem(str(item_factor[0])) self.dialogUi.cb_discretizar_2.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Senyales de aceptar y cancelar QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.accept, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def setUp(self): self.console = rinterface.get_writeconsole() def noconsole(x): pass rinterface.set_writeconsole(noconsole)
def openRecodificar(self): # Abro el dialogo self.dialogUi = self.d_recodificar self.dialogUi.setWindowTitle("Recodificar") self.dialogUi.show() # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_variable_reco.clear() self.dialogUi.cb_variable_reco.addItem("**Variable no seleccionada**") for i in range(n_items): item_factor = "names(datos)[" + str(i + 1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_variable_reco.addItem(str(item_factor[0])) self.dialogUi.cb_variable_reco.currentIndexChanged.connect( self.changeComboBox) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.accept, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def acceptIntragrupo(self): print ("*Accept*") fac_intra = "fac.intra=list(" for i in range(self.dialogUi.table_factor.rowCount()): itemName = self.dialogUi.table_factor.item(i, 0).text() itemParams = self.dialogUi.table_factor.item(i, 1).text() fac_intra = fac_intra + itemName + "=" + itemParams if (i != self.dialogUi.table_factor.rowCount()-1): fac_intra = fac_intra + ", " fac_intra = fac_intra + ")" print fac_intra col_begin = self.dialogUi.col_begin.text() if self.dialogUi.check_graficas.isChecked(): graficas = ", grafica=T" else: graficas = ", grafica=F" graficas = "" #hay un error en el toolbox que no permite ejecutar el comando comando = "Anova.fnc(datos, " + fac_intra + ", col.empieza.mr=" + col_begin + graficas + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x.decode("utf8")) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado.decode("utf8"))) rinterface.set_writeconsole(rinterface.consolePrint)
def openHistograma(self): self.dialogUi = self.d_histograma self.dialogUi.setWindowTitle("Histograma") self.dialogUi.show() # Abro el multiselector self.listMulti = [] self.dialogUi.var_select.clear() QtCore.QObject.connect(self.dialogUi.pushMultiSelector, QtCore.SIGNAL("clicked()"), self.openMultiSelector, QtCore.Qt.UniqueConnection) # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_variable.clear() for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_variable.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.acceptHistograma, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def openContrIntra(self): self.dialogUi = self.d_contr_intra self.dialogUi.setWindowTitle(("Contraste T intragrupo").decode("utf8")) self.dialogUi.show() # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_var1.clear() self.dialogUi.cb_var2.clear() for i in range(n_items): item_factor = "names(datos)[" + str(i + 1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_var1.addItem(str(item_factor[0])) self.dialogUi.cb_var2.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.acceptIntragrupo, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def acceptPercentiles(self): print ("*Accept*") variable = str(self.dialogUi.cb_variable.currentText()) factor = str(self.dialogUi.cb_factor.currentText()) percentiles = self.dialogUi.le_percentiles.text() if (len(percentiles) > 0): percentiles = ", percentiles=c(" + percentiles + ")" else: percentiles = "" if (factor == "Sin factor"): comando = "percentiles.fnc(datos, variable='" + variable + "'" + percentiles + ")" else: comando = "percentiles.fnc(datos, variable='" + variable + "', que.factor='" + factor + "'" + percentiles + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def openRegresionMultiple(self): self.dialogUi = self.d_regr_multiple self.dialogUi.setWindowTitle(("Regresión múltiple").decode("utf8")) self.dialogUi.show() # Abro el multiselector self.dialogUi.var_select.clear() QtCore.QObject.connect(self.dialogUi.pushMultiSelector, QtCore.SIGNAL("clicked()"), self.openMultiSelector, QtCore.Qt.UniqueConnection) # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_vd.clear() for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_vd.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.acceptRegresion, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def acceptIntergrupo(self): print ("*Accept*") fac_inter = "c('" fac_inter = fac_inter + "', '".join(self.listMulti) fac_inter = fac_inter + "')" vd = str(self.dialogUi.cb_variable.currentText()) if self.dialogUi.rb_tipo2.isChecked(): tipo = ", tipo=2" elif self.dialogUi.rb_tipo3.isChecked(): tipo = ", tipo=3" else: tipo = "" if self.dialogUi.rb_tipo3.isChecked(): pdf = ", to.pdf=T" else: pdf = "" comando = "Anova.fnc(datos, fac.inter=" + fac_inter + ", vd='" + vd + "'" + tipo + pdf + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def acceptMediacion(self): print ("*Accept*") vd = str(self.dialogUi.cb_dependiente.currentText()) vi = str(self.dialogUi.cb_independiente.currentText()) m = str(self.dialogUi.cb_moduladora.currentText()) covariante = "c('" covariante = covariante + "', '".join(self.listMulti) covariante = covariante + "')" #tipo mediacion if self.dialogUi.rb_basic.isChecked(): mediacion = "list(vd='" + vd + "',vi='" + vi + "',m='" + m + "')" comando = "analisis.mediacion.fnc(datos, " + mediacion + ")" elif self.dialogUi.rb_interac.isChecked(): mediacion = "list(vd='" + vd + "',vi='" + vi + "',m='" + m + "')" comando = "analisis.mediacion.fnc(datos, " + mediacion + ", interaccion.vi.m=T)" elif self.dialogUi.rb_covariante.isChecked(): mediacion = "list(vd='" + vd + "',vi='" + vi + "',m='" + m + "', covariante=" + covariante + ")" comando = "analisis.mediacion.fnc(datos, " + mediacion + ")" else: self.openMediacion() #ejecucion self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x.decode("utf8")) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado.decode("utf8"))) rinterface.set_writeconsole(rinterface.consolePrint)
def eval(self, line): ''' Parse and evaluate a line of R code with rpy2. Returns the output to R's stdout() connection, the value generated by evaluating the code, and a boolean indicating whether the return value would be visible if the line of code were evaluated in an R REPL. R Code evaluation and visibility determination are done via an R call of the form withVisible({<code>}) ''' old_writeconsole = ri.get_writeconsole() ri.set_writeconsole(self.write_console) try: res = ro.r("withVisible({%s})" % line) value = res[0] #value (R object) visible = ro.conversion.ri2py(res[1])[0] #visible (boolean) except (ri.RRuntimeError, ValueError) as exception: warning_or_other_msg = self.flush( ) # otherwise next return seems to have copy of error raise RInterpreterError(line, str_to_unicode(str(exception)), warning_or_other_msg) text_output = self.flush() ri.set_writeconsole(old_writeconsole) return text_output, value, visible
def acceptFrecuencias(self): print("*Accept*") variables = "', '".join(self.listMulti) variables = "c('" + variables + "')" grafica = "" prop = "" if self.dialogUi.cb_grafica.isChecked(): grafica = ", grafica=T" if self.dialogUi.cb_tabla.isChecked(): variables = ":".join(self.listMulti) variables = "'" + variables + "'" if self.dialogUi.cb_frecuencias.isChecked(): prop = ", prop=T" comando = "frecuencias.fnc(datos, variables=" + variables + grafica + prop + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def openContrIntra(self): self.dialogUi = self.d_contr_intra self.dialogUi.setWindowTitle(("Contraste T intragrupo").decode("utf8")) self.dialogUi.show() # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_var1.clear() self.dialogUi.cb_var2.clear() for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_var1.addItem(str(item_factor[0])) self.dialogUi.cb_var2.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.acceptIntragrupo, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def eval(self, line): ''' Parse and evaluate a line of R code with rpy2. Returns the output to R's stdout() connection, the value generated by evaluating the code, and a boolean indicating whether the return value would be visible if the line of code were evaluated in an R REPL. R Code evaluation and visibility determination are done via an R call of the form withVisible({<code>}) ''' old_writeconsole = ri.get_writeconsole() ri.set_writeconsole(self.write_console) try: res = ro.r("withVisible({%s\n})" % line) value = res[0] # value (R object) visible = ro.conversion.ri2py(res[1])[0] # visible (boolean) except (ri.RRuntimeError, ValueError) as exception: # otherwise next return seems to have copy of error warning_or_other_msg = self.flush() raise RInterpreterError( line, str_to_unicode(str(exception)), warning_or_other_msg) text_output = self.flush() ri.set_writeconsole(old_writeconsole) return text_output, value, visible
def openPercentiles(self): self.dialogUi = self.d_percentiles self.dialogUi.setWindowTitle("Percentiles") self.dialogUi.show() # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_variable.clear() self.dialogUi.cb_factor.clear() self.dialogUi.cb_factor.addItem(str("Sin factor")) for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_variable.addItem(str(item_factor[0])) self.dialogUi.cb_factor.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.acceptPercentiles, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def eval(self, line): """Evaluate a line or block of code in R Parameters ---------- line : str The code to execute Examples -------- >>> r.eval(''' ... x = 1:5 ... df = data.frame(x=x, y=x^2) ... print(df) ... ''') x y 1 1 1 2 2 4 3 3 9 4 4 16 5 5 25 """ old_writeconsole = ri.get_writeconsole() ri.set_writeconsole(self._write_console) try: value = ri.baseenv['eval'](ri.parse(line)) except (ri.RRuntimeError, ValueError) as exception: warning_or_other_msg = self._flush() # otherwise next return seems to have copy of error raise RInterpreterError(line, str_to_unicode(str(exception)), warning_or_other_msg) text_output = self._flush() ri.set_writeconsole(old_writeconsole) if text_output: sys.stdout.write(unicode_to_str(text_output, 'utf-8'))
def acceptMultivar(self): print("*Accept*") variables = "c('" variables = variables + "', '".join(self.listMulti) variables = variables + "')" factor = str(self.dialogUi.cb_factor.currentText()) if (factor == "Sin factor"): factor = "" else: factor = ", que.factor='" + factor + "'" if self.dialogUi.check_tras.isChecked(): traspuesta = ", traspuesta=T" else: traspuesta = "" if self.dialogUi.check_simple.isChecked(): simple = ", simple=T" else: simple = "" comando = "descriptivos.fnc(OBrienKaiser, variables=" + variables + factor + traspuesta + simple + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def openRecodificar(self): # Abro el dialogo self.dialogUi = self.d_recodificar self.dialogUi.setWindowTitle("Recodificar") self.dialogUi.show() # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_variable_reco.clear() self.dialogUi.cb_variable_reco.addItem("**Variable no seleccionada**") for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_variable_reco.addItem(str(item_factor[0])) self.dialogUi.cb_variable_reco.currentIndexChanged.connect(self.changeComboBox) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.accept, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def testSetFlushConsole(self): flush = {'count': 0} def f(): flush['count'] = flush['count'] + 1 rinterface.set_flushconsole(f) self.assertEqual(rinterface.get_flushconsole(), f) rinterface.baseenv.get("flush.console")() self.assertEqual(1, flush['count']) rinterface.set_writeconsole(rinterface.consoleFlush)
def acceptSegmentado(self): print ("*Accept*") comando = "x.factor=divide.por.factor.fnc(datos, que.factor='" + str(self.dSegmentadoUi.factorCombo.currentText()) + "')" self.ui.text_result.append("> " + comando) def f(x): print x rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def testSetWriteConsole(self): buf = [] def f(x): buf.append(x) rinterface.set_writeconsole(f) self.assertEqual(rinterface.get_writeconsole(), f) code = rinterface.SexpVector(["3", ], rinterface.STRSXP) rinterface.baseenv["print"](code) self.assertEqual('[1] "3"\n', str.join('', buf))
def acceptRegresion(self): print ("*Accept*") #variables variables = "c('" variables = variables + "', '".join(self.listMulti) variables = variables + "')" #variable dependiente vd = str(self.dialogUi.cb_vd.currentText()) #grafica if self.dialogUi.check_grafica.isChecked(): grafica = ", grafica=T" else: grafica = "" #paso a paso if self.dialogUi.check_paso.isChecked(): paso = ", paso.a.paso=T" else: paso = "" #robusta if self.dialogUi.check_robusta.isChecked(): robusta = ", robusta=T" else: robusta = "" #dominancia if self.dialogUi.check_dominancia.isChecked(): dominancia = ", dominancia=T" else: dominancia = "" #interaccion if self.dialogUi.check_interaccion.isChecked(): interaccion = ", interaccion=T" else: interaccion = "" #comando comando = "regresion.multiple.fnc(datos, vd='" + vd + "', variables=" + variables + grafica + paso + robusta + dominancia + interaccion + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x.decode("utf8")) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado.decode("utf8"))) rinterface.set_writeconsole(rinterface.consolePrint)
def acceptRegresion(self): print("*Accept*") #variables variables = "c('" variables = variables + "', '".join(self.listMulti) variables = variables + "')" #variable dependiente vd = str(self.dialogUi.cb_vd.currentText()) #grafica if self.dialogUi.check_grafica.isChecked(): grafica = ", grafica=T" else: grafica = "" #paso a paso if self.dialogUi.check_paso.isChecked(): paso = ", paso.a.paso=T" else: paso = "" #robusta if self.dialogUi.check_robusta.isChecked(): robusta = ", robusta=T" else: robusta = "" #dominancia if self.dialogUi.check_dominancia.isChecked(): dominancia = ", dominancia=T" else: dominancia = "" #interaccion if self.dialogUi.check_interaccion.isChecked(): interaccion = ", interaccion=T" else: interaccion = "" #comando comando = "regresion.multiple.fnc(datos, vd='" + vd + "', variables=" + variables + grafica + paso + robusta + dominancia + interaccion + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x.decode("utf8")) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado.decode("utf8"))) rinterface.set_writeconsole(rinterface.consolePrint)
def guardarArchivo(self): fileName, _ = QtGui.QFileDialog.getSaveFileName(self.ui.mnu_archivo, "Guardar archivo", "", "Archivos de R (*.Rdata)") comando = "guarda.Rdata.fnc(datos, nombre='"+ fileName +"')" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) rinterface.set_writeconsole(rinterface.consolePrint)
def exportarArchivo(self): fileName, _ = QtGui.QFileDialog.getSaveFileName(self.ui.mnu_archivo, "Exortar archivo como txt", "", "Archivos de texto (*.txt)") comando = "exporta.txt.fnc(datos, nombre='"+ fileName +"')" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) rinterface.set_writeconsole(rinterface.consolePrint)
def initToolbox(self): def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) backupList = robjects.globalenv.keys() resultado = robjects.r("source('./script/ULLRtoolbox.v.1.0.R')") currentList = robjects.globalenv.keys() if len(backupList) == len(currentList): self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def acceptSegmentado(self): print("*Accept*") comando = "x.factor=divide.por.factor.fnc(datos, que.factor='" + str( self.dSegmentadoUi.factorCombo.currentText()) + "')" self.ui.text_result.append("> " + comando) def f(x): print x rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def testSetWriteConsole(self): buf = [] def f(x): buf.append(x) rinterface.set_writeconsole(f) self.assertEqual(rinterface.get_writeconsole(), f) code = rinterface.SexpVector([ "3", ], rinterface.STRSXP) rinterface.baseenv["print"](code) self.assertEqual('[1] "3"\n', str.join('', buf))
def openCorrelacion(self): self.dialogUi = self.d_correlacion self.dialogUi.setWindowTitle("Correlación".decode("utf8")) self.dialogUi.show() self.listMulti_1 = [] self.listMulti_2 = [] # Oculto todo lo necesario self.dialogUi.groupBox_2.setHidden(True) self.dialogUi.groupBox_3.setHidden(True) self.dialogUi.groupBox_4.setHidden(True) self.dialogUi.groupBox_5.setHidden(True) self.dialogUi.groupBox_6.setHidden(True) self.dialogUi.setFixedHeight(150) # QtCore.QObject.connect(self.dialogUi.rb_pearsson, QtCore.SIGNAL("clicked()"), self.onClickPearsson, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.rb_policorica, QtCore.SIGNAL("clicked()"), self.onClickCorica, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.rb_tetracorica, QtCore.SIGNAL("clicked()"), self.onClickCorica, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.rb_parcial, QtCore.SIGNAL("clicked()"), self.onClickParcial, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.rb_semiparcial, QtCore.SIGNAL("clicked()"), self.onClickParcial, QtCore.Qt.UniqueConnection) # Abro los multiselectores self.dialogUi.var_select_1.clear() QtCore.QObject.connect(self.dialogUi.pushMultiSelector_1, QtCore.SIGNAL("clicked()"), self.openMultiSelector_1, QtCore.Qt.UniqueConnection) self.dialogUi.var_select_2.clear() QtCore.QObject.connect(self.dialogUi.pushMultiSelector_2, QtCore.SIGNAL("clicked()"), self.openMultiSelector_2, QtCore.Qt.UniqueConnection) # Inicializo los combobox def f(x): print x rinterface.set_writeconsole(f) n_items = "length(names(datos))" n_items = robjects.r(n_items) n_items = n_items[0] self.dialogUi.cb_factor.clear() self.dialogUi.cb_factor.addItem(str("Sin factor")) for i in range(n_items): item_factor = "names(datos)[" + str(i+1) + "]" item_factor = robjects.r(item_factor) self.dialogUi.cb_factor.addItem(str(item_factor[0])) rinterface.set_writeconsole(rinterface.consolePrint) # Signals QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("accepted()"), self.accept, QtCore.Qt.UniqueConnection) QtCore.QObject.connect(self.dialogUi.buttonBox, QtCore.SIGNAL("rejected()"), self.cancel, QtCore.Qt.UniqueConnection)
def testWriteConsoleWithError(self): def f(x): raise CustomException("Doesn't work.") rinterface.set_writeconsole(f) tmp_file = tempfile.NamedTemporaryFile() stderr = sys.stderr sys.stderr = tmp_file try: code = rinterface.SexpVector(["3", ], rinterface.STRSXP) rinterface.baseenv["print"](code) except Exception, e: sys.stderr = stderr raise e
def acceptSplit(self): print ("*Accept*") #fac.inter fac_inter = "c('" fac_inter = fac_inter + "', '".join(self.listMulti) fac_inter = fac_inter + "')" #fac.intra fac_intra = "fac.intra=list(" for i in range(self.dialogUi.table_factor.rowCount()): itemName = self.dialogUi.table_factor.item(i, 0).text() itemParams = self.dialogUi.table_factor.item(i, 1).text() fac_intra = fac_intra + itemName + "=" + itemParams if (i != self.dialogUi.table_factor.rowCount()-1): fac_intra = fac_intra + ", " fac_intra = fac_intra + ")" print fac_intra #col.empieza col_begin = self.dialogUi.col_begin.text() #tipo de nivel if self.dialogUi.btn_tipo2.isChecked(): tipo = ", tipo=2" elif self.dialogUi.btn_tipo3.isChecked(): tipo = ", tipo=3" else: tipo = "" #ylim limit_sup = self.dialogUi.limit_sup.text() limit_inf = self.dialogUi.limit_inf.text() ylim = ", ylim=c(" + limit_inf + "," + limit_sup + ")" #comando comando = "Anova.fnc(datos, fac.inter=" + fac_inter + ", " + fac_intra + ", col.empieza.mr=" + col_begin + ylim + tipo + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x.decode("utf8")) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado.decode("utf8"))) rinterface.set_writeconsole(rinterface.consolePrint)
def acceptHistograma(self): print ("*Accept*") #variable variable = str(self.dialogUi.cb_variable.currentText()) #factores if (len(self.listMulti) > 0): factores = ":".join(self.listMulti) factores = ", que.factor='" + factores + "'" else: factores = "" #orden -> orden=c(1,2) col = self.dialogUi.le_col.text() fil = self.dialogUi.le_fil.text() if (len(col) > 0): orden = ", orden=c(" + col + ", " + fil + ")" else: orden = "" #cortes -> cortes=c(-2,2) izda = self.dialogUi.le_izda.text() dcha = self.dialogUi.le_dcha.text() if (len(izda) > 0): cortes = ", cortes=c(" + izda + ", " + dcha + ")" else: cortes = "" #parametro tipificado if self.dialogUi.check_tipificados.isChecked(): tipica = ", p.tipica=T" else: tipica = "" #parametro misma grafica if self.dialogUi.check_onlyone.isChecked(): check = ", check=T" else: check = "" comando = "histograma.fnc(datos, vd='" + variable + "'" + factores + tipica + check + orden + cortes + ")" self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) resultado = robjects.r(comando) self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def testChooseFileWithError(self): def noconsole(x): pass rinterface.set_writeconsole(noconsole) # reverted by the tearDown method def f(prompt): raise Exception("Doesn't work.") rinterface.set_choosefile(f) tmp_file = tempfile.NamedTemporaryFile() stderr = sys.stderr sys.stderr = tmp_file try: res = rinterface.baseenv["file.choose"]() except rinterface.RRuntimeError, rre: pass
def insertCommand(self): comando = self.ui.edit_comandos.toPlainText() self.ui.text_result.append("> " + comando) def f(x): self.ui.text_result.textCursor().insertText(x) rinterface.set_writeconsole(f) backupList = robjects.globalenv.keys() resultado = robjects.r(comando) currentList = robjects.globalenv.keys() if len(backupList) == len(currentList): self.ui.text_result.append(str(resultado)) rinterface.set_writeconsole(rinterface.consolePrint)
def eval(self, line): ''' Parse and evaluate a line with rpy2. Returns the output to R's stdout() connection and the value of eval(parse(line)). ''' old_writeconsole = ri.get_writeconsole() ri.set_writeconsole(self.write_console) try: value = ri.baseenv['eval'](ri.parse(line)) except (ri.RRuntimeError, ValueError) as exception: warning_or_other_msg = self.flush() # otherwise next return seems to have copy of error raise RInterpreterError(line, str_to_unicode(str(exception)), warning_or_other_msg) text_output = self.flush() ri.set_writeconsole(old_writeconsole) return text_output, value
def testWriteConsoleWithError(self): def f(x): raise CustomException("Doesn't work.") rinterface.set_writeconsole(f) tmp_file = tempfile.NamedTemporaryFile() stderr = sys.stderr sys.stderr = tmp_file try: code = rinterface.SexpVector([ "3", ], rinterface.STRSXP) rinterface.baseenv["print"](code) except Exception, e: sys.stderr = stderr raise e
def eval(self, line): ''' Parse and evaluate a line with rpy2. Returns the output to R's stdout() connection and the value of eval(parse(line)). ''' old_writeconsole = ri.get_writeconsole() ri.set_writeconsole(self.write_console) try: value = ri.baseenv['eval'](ri.parse(line)) except (ri.RRuntimeError, ValueError) as exception: warning_or_other_msg = self.flush() # otherwise next return seems to have copy of error raise RMagicError(unicode_to_str('parsing and evaluating line "%s".\nR error message: "%s"\n R stdout:"%s"\n' % (line, str_to_unicode(exception.message, 'utf-8'), warning_or_other_msg))) text_output = self.flush() ri.set_writeconsole(old_writeconsole) return text_output, value
def eval(self, line): ''' Parse and evaluate a line with rpy2. Returns the output to R's stdout() connection and the value of eval(parse(line)). ''' old_writeconsole = ri.get_writeconsole() ri.set_writeconsole(self.write_console) try: value = ri.baseenv['eval'](ri.parse(line)) except (ri.RRuntimeError, ValueError) as exception: warning_or_other_msg = self.flush( ) # otherwise next return seems to have copy of error raise RInterpreterError(line, str_to_unicode(str(exception)), warning_or_other_msg) text_output = self.flush() ri.set_writeconsole(old_writeconsole) return text_output, value
def testWriteConsoleWithError(self): def f(x): raise CustomException("Doesn't work.") rinterface.set_writeconsole(f) tmp_file = tempfile.NamedTemporaryFile() stderr = sys.stderr sys.stderr = tmp_file try: code = rinterface.SexpVector(["3", ], rinterface.STRSXP) rinterface.baseenv["print"](code) except Exception as e: sys.stderr = stderr raise e sys.stderr = stderr tmp_file.flush() tmp_file.seek(0) self.assertEqual("Doesn't work.", str(sys.last_value))
def acceptOpenNewVar2(self): comandR1 = "mi.lista=list(" for i in range(self.dialogUi.factor_table.rowCount()): itemName = self.dialogUi.factor_table.item(i, 0).text() itemParams = self.dialogUi.factor_table.item(i, 1).text() print("itemName: " + itemName) print("itemParams" + itemParams) comandR1 = comandR1 + itemName + "=c(" + itemParams + ")" if (i != self.dialogUi.factor_table.rowCount() - 1): comandR1 = comandR1 + ", " comandR1 = comandR1 + ")" if self.dialogUi.nv_media.isChecked(): print "media" comandR2 = "iqitems=compute.fnc(datos, variables=mi.lista)" elif self.dialogUi.nv_mediana.isChecked(): print "mediana" comandR2 = "iqitems=compute.fnc(datos, variables=mi.lista, estadistico='mediana')" elif self.dialogUi.nv_suma.isChecked(): print "suma" comandR2 = "iqitems=compute.fnc(datos, variables=mi.lista, estadistico='suma')" elif self.dialogUi.nv_sc.isChecked(): print "sc" comandR2 = "iqitems=compute.fnc(datos, variables=mi.lista, estadistico='sc')" else: self.openNewVar2() def f(x): print x rinterface.set_writeconsole(f) print comandR1 self.ui.text_result.append("> " + comandR1) comandR1 = robjects.r(comandR1) print comandR2 self.ui.text_result.append("> " + comandR2) comandR2 = robjects.r(comandR2) self.ui.text_result.append(str(comandR2)) rinterface.set_writeconsole(rinterface.consolePrint)
def test_push_dataframe(self): df = pd.DataFrame([{'a': 1, 'b': 'bar'}, {'a': 5, 'b': 'foo', 'c': 20}]) self.ip.push({'df':df}) self.ip.run_line_magic('Rpush', 'df') # This is converted to factors, which are currently converted back to Python # as integers, so for now we test its representation in R. sio = StringIO() rinterface.set_writeconsole(sio.write) try: r('print(df$b[1])') self.assertIn('[1] bar', sio.getvalue()) finally: rinterface.set_writeconsole(None) # Values come packaged in arrays, so we unbox them to test. self.assertEqual(r('df$a[2]')[0], 5) missing = r('df$c[1]')[0] assert np.isnan(missing), missing
def testChooseFileWithError(self): def noconsole(x): pass rinterface.set_writeconsole( noconsole) # reverted by the tearDown method def f(prompt): raise Exception("Doesn't work.") rinterface.set_choosefile(f) tmp_file = tempfile.NamedTemporaryFile() stderr = sys.stderr sys.stderr = tmp_file try: res = rinterface.baseenv["file.choose"]() except rinterface.RRuntimeError, rre: pass
def acceptOpenNewVar3(self): fncAlgoritmica = self.dialogUi.fnc_algoritmica.toPlainText() def f(x): print x rinterface.set_writeconsole(f) comandR1 = "mi.expresion=" + fncAlgoritmica print comandR1 self.ui.text_result.append("> " + comandR1) comandR1 = robjects.r(comandR1) comandR2 = "iqitems = compute.fnc(datos, expresion=mi.expresion)" print comandR2 self.ui.text_result.append("> " + comandR2) comandR2 = robjects.r(comandR2) self.ui.text_result.append(str(comandR2)) rinterface.set_writeconsole(rinterface.consolePrint)
def acceptOpenNewVar1(self): nameNewVar = self.dialogUi.new_var_1.text() initNewVar = self.dialogUi.init_var.text() def f(x): print x rinterface.set_writeconsole(f) for i in range(self.dialogUi.nivel_table.rowCount()): comandR1 = "" comandR2 = "datos$" + nameNewVar + "='" + initNewVar + "'" comandR3 = "datos[" for j in range(self.dialogUi.nivel_table.columnCount() - 1): varCond = self.listMulti[j] comandR1 = "datos$" + varCond + "=recode(datos$" + varCond + ", \"NA=-999\")" print comandR1 self.ui.text_result.append("> " + comandR1) comandR1 = robjects.r(comandR1) self.ui.text_result.append(str(comandR1)) itemContent = self.dialogUi.nivel_table.item(i, j + 1).text() comandR3 = comandR3 + "datos$" + itemContent if (self.dialogUi.nivel_table.rowCount() - 1 == j): comandR3 = comandR3 + " & " else: reomandR3 + ", " nameCond = self.dialogUi.nivel_table.item(i, 0).text() comandR3 = comandR3 + "]$" + nameNewVar + "='" + nameCond + "'" print comandR2 self.ui.text_result.append("> " + comandR2) comandR2 = robjects.r(comandR2) self.ui.text_result.append(str(comandR2)) print comandR3 self.ui.text_result.append("> " + comandR3) comandR3 = robjects.r(comandR3) self.ui.text_result.append(str(comandR3)) rinterface.set_writeconsole(rinterface.consolePrint)