def generar_reporte(self, reg, rango=[10, 100, 1000, 10000, 100000]): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += "<title>Reporte 1: n={n}, k={k}.</title>".format(n=self.n, k=self.k) html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += "</head>" html += "<body>" nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '<li class="titulo">Experimentos</li>' content = '<div id="content"><h1>Reporte 1: n={n}, k={k}.</h1>'.format(n=self.n, k=self.k) m_gen = muestras.Muestra(self.n, self.k, 0) abstract = '<div id="abstract"><h2>Explicacion</h2>' abstract += '<p class="texto">Es un reporte para investigar graficamente el comportamiento de la funcion con diferentes tamanños de muestra. Tratando de investigar las caracteristicas del caso promedio.</p>' abstract += "<h3>Parametros comunes:</h3>" abstract += "<p><strong>Tamaño de cadena (n)</strong>: {a}</p>".format(a=self.n) abstract += "<p><strong>Tamaño de alfabeto (k)</strong>: {a}</p>".format(a=self.k) abstract += "<p><strong>Tamaño de Poblacion</strong>: " try: abstract += "{a}".format(a=float(m_gen.poblacion())) except: abstract += "{a} * {b}".format(a=m_gen.k, b=m_gen.n) abstract += "</p>" ran_gen = m_gen.rango_posible() abstract += "<p><strong>Mejor Caso</strong>: {a}</p>".format(a=ran_gen[0]) abstract += "<p><strong>Peor Caso</strong>: {a}</p>".format(a=ran_gen[1]) abstract += "</div>" content += abstract for x in rango: navlink, subsec = self.generar_seccion(x, reg) nav += navlink content += subsec nav += "</ul></div>" content += "</div>" html += nav html += content html += "</body></html>" filename = "reporte1-{n}-{k}_".format(n=self.n, k=self.k) + utils.fecha_para_filename() + ".html" with open(reg.directorio_reportes + filename, mode="w") as my_file: my_file.write(html) return filename
def generar_reportes(self, reg): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += '<title>Reportes de Tipo 3</title>' html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += '</head>' html += '<body>' nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '</ul></div>' html += nav html += '<div id="content"><h1>Reportes de Tipo 3</h1>' abstract = '<div class="abstract"><p class="texto">Familia de reportes del tipo 3. En estos reportes, <em>tamaño de muestra</em> se mantiene constantes, y se va variando el <em>tamaño del alfabeto y cadena</em>. Se intenta investigar graficamente como varia el grafico de la distribucion variando los parametros <em>n</em> y <em>k</em>.</p>' abstract += '<h3>Parametros comunes:</h3>' abstract += '<p><strong>Variaciones de tamaño de Cadena y Alfabeto</strong>: ' temp = [] #for x in self.nk: # temp.append() abstract += ', '.join([ ("(" + str(x[0]) + "," + str(x[1]) + ")") for x in temp]) abstract += '</p>' abstract += '<p><strong>Rango de tamaño de muestra</strong>: ' abstract += ', '.join([str(x) for x in self.rango]) abstract += '</p>' abstract += '</div>' html += abstract html += '<h2>Reportes Generados</h2>' for cant in self.rango: link = self.generar_reporte3(cant, reg) html += link html += '</div></body></html>' filename = reg.directorio_reportes + "reportes-3_" + reg.suffix + ".html" with open(filename, mode="w") as my_file: my_file.write( html ) return filename
def generar_reportes(self, reg): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += '<title>Reportes de Tipo 2</title>' html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += '</head>' html += '<body>' nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '</ul></div>' html += nav html += '<div id="content"><h1>Reportes de Tipo 2</h1>' abstract = '<div class="abstract"><p class="texto">Familia de reportes del tipo 2. En estos reportes, el <em>tamaño de cadena</em> y el <em>tamaño de muestra</em> se mantienen constantes, luego se va variando el tamaño del alfabeto. Se intenta investigar graficamente como afecta el tamaño de <em>alfabeto</em> a la distribucion.</p>' abstract += '<h3>Parametros comunes:</h3>' abstract += '<p><strong>Tamaño de Muestra</strong>: {a}'.format(a=self.cant) abstract += '<p><strong>Rango de tamaño de Cadena</strong>: ' abstract += ', '.join([str(x) for x in self.enes]) abstract += '</p>' abstract += '<p><strong>Rango de tamaño de Alfabeto</strong>: ' abstract += ', '.join([str(x) for x in self.rango]) abstract += '</p>' abstract += '</div>' html += abstract html += '<h2>Reportes Generados</h2>' for n in self.enes: link = self.generar_reporte2(n, reg) html += link html += '</div></body></html>' filename = reg.directorio_reportes + "reportes-2_" + reg.suffix + ".html" with open(filename, mode="w") as my_file: my_file.write( html ) return filename
def generar_reporte(self, reg, rango=[10,20,50,100,200,500]): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += '<title>Reporte 2: n={n}, muestras={k}.</title>'.format(n=self.n, k=self.cant) html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += '</head>' html += '<body>' nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '<li class="titulo">Experimentos</li>' content = '<div id="content"><h1>Reporte 2: n={n}, muestras={k}.</h1>'.format(n=self.n, k=self.cant) abstract = '<div id="abstract"><h2>Explicacion</h2>' abstract += '<p class="texto">Es un reporte para investigar graficamente el comportamiento de la funcion manteniendo el tamaño de cadena y el tamanño de muestra, pero variando el tamaño del alfabeto. Se intenta ver como se modifica el grafico de la funcion.</p>' abstract += '<h3>Parametros comunes:</h3>' abstract += '<p><strong>Tamaño de cadena (n)</strong>: {a}</p>'.format(a=self.n) abstract += '<p><strong>Tamaño de muestra</strong>: {a}</p>'.format(a=self.cant) abstract += '<p><strong>Rango de tamaño de Alfabeto</strong>: ' abstract += ', '.join([str(x) for x in rango]) abstract += '</p>' abstract += '</div>' content += abstract for x in rango: navlink, subsec = self.generar_seccion(x, reg) nav += navlink content += subsec nav += '</ul></div>' content += '</div>' html += nav html += content html += '</body></html>' filename = "reporte2-{n}-{k}_".format(n=self.n, k=self.cant) + utils.fecha_para_filename() + ".html" with open(reg.directorio_reportes + filename, mode="w") as my_file: my_file.write( html ) return filename
def generar_reportes(self, reg): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += "<title>Reportes de Tipo 1</title>" html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += "</head>" html += "<body>" nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += "</ul></div>" html += nav html += '<div id="content"><h1>Reportes de Tipo 1</h1>' abstract = '<div class="abstract"><p class="texto">Familia de reportes del tipo 1. En estos reportes, el <em>tamaño de cadena</em> y el <em>tamaño de alfabeto</em> se mantienen constantes y equivalentes, luego se va variando el tamaño de la muestra. Se intenta mostrar graficamente como a mayor tamaño de <em>muestra</em> la distribucion va aproximandose a una grafica determinada.</p>' abstract += '<p class="texto">Se intenta asi mismo ver si esta grafica es equivalente para diferentes valores de <em>tamaño de cadena</em> y <em>tamaño de alfabeto</em>.</p>' abstract += "<h3>Parametros comunes:</h3>" abstract += "<p><strong>Rango de tamaño de Cadena</strong>: " abstract += ", ".join([str(x) for x in self.enes]) abstract += "</p>" abstract += "<p><strong>Rango de tamaño de Muestra</strong>: " abstract += ", ".join([str(x) for x in self.rango]) abstract += "</p>" abstract += "</div>" html += abstract html += "<h2>Reportes Generados</h2>" for n in self.enes: link = self.generar_reporte1(n, reg) html += link html += "</div></body></html>" filename = reg.directorio_reportes + "reportes-1_" + reg.suffix + ".html" with open(filename, mode="w") as my_file: my_file.write(html) return filename
#Reporte3 print("Reportes de tipo 3") r3 = gen_reporte3.GenerarReporte3([(10,10),(25,25),(50,50),(100,100),(150,150), (200,200)], [10,100,500,1000,5000,10000,50000]) r3.generar_reportes(reg) ''' html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += '<title>Reportes Generados</title>' html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += '</head>' html += '<body>' nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '</ul></div>' html += nav html += '<div id="content"><h1>Trabajo Final de Lenguajes de Scripting</h1>' html += '<p><strong>Alumno</strong>: Emiliano Martínez Luque</p>' html += '<p><strong>Legajo</strong>: 43556</p>' html += '<p><strong>Docente</strong>: Ares</p>' html += '<p><strong>Cursada</strong>: Viernes a la Noche, Segundo Cuatrimestre 2011</p>' html += '<h2>Descripción General</h2>' html += '<p class="texto">Se trata de una serie de scripts en <em>Python</em> para analizar el comportamiento de un algoritmo bajo diferentes inputs. Se generan una serie de reportes en los que se varian algunos de los parametros del input y se analizan los resultados.</p>' html += '<h2>Motivación</h2>' html += '<p class="texto">Por una cuestión de ejercitación personal, estuve realizando el análisis de complejidad de un algoritmo genérico básico. Al comenzar este análisis resulto relativamente fácil tanto determinar la corrección del algoritmo, como buscar estructuras de datos para mejorarlo, así como determinar matematicamente el mejor y el peor caso. Sin embargo la definición de una función matematica para determinar el comportamiento del <em>caso promedio</em> no resulto tan inmediato. Se busca con este trabajo proveer datos exploratorios para ayudar en este proceso.</p>' html += '<h3>Descripción del Algoritmo a Analizar</h3>' html += '<p class="texto">Es un algoritmo sencillo en el que dado una lista de números ordenados, por ejemplo: [1,3,3,6,4,8,6,4,10], retorna la misma lista manteniendo el orden pero sacando los duplicados, por ejemplo: [1,3,6,4,8,10]. Básicamente se crea otra lista <em>pasados</em> y se va iterando por la lista original y comparando contra <em>pasados</em>. En cada iteración si el valor preexiste en <em>pasados</em> se borra el valor de la lista original, si no preexiste, se lo agrega a <em>pasados</em> y se continua el proceso. Definitivamente el algoritmo puede ser mejorado usando mejores estructuras de datos (por ejemplo: binary search trees). Pero, dado que ese análisis ya lo he hecho, el objetivo de este Trabajo es otro, a saber analizar el comportamiento de la función sobre una distribución de probabilidades aleatorias.</p>'