示例#1
0
    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
示例#2
0
  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
示例#3
0
  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
示例#4
0
  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
示例#5
0
    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
示例#6
0
  #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>'