DU X97390


Statement
 

pdf   zip   tar

html

El objetivo en este examen de la práctica será modificar dos de las funcionalidades de tu solución de la práctica. Concretamente deberás cambiar:

  1. el método utilizado para calcular la distancia entre dos especies
  2. el método para calcular distancias entre clústers a lo largo de la ejecución del algoritmo de clusterización que construye un árbol filogenético

IMPORTANTE: Este problema de Jutge es el único canal disponible para realizar la entrega del examen de la práctica. Ten en cuenta que

  • Dispondrás de 1h 45 min para la resolución del examen.
  • La nota del examen procederá exclusivamente de la corrección automática de tu último envío.
  • No superar ningún juego de pruebas conlleva un cero en la nota de este examen.
  • Podrás realizar tantas entregas como quieras, pero solo se tendrá en cuenta la más reciente.

Las dos nuevas funcionalidades que has de implementar en este examen están descritas con todo detalle en el documento enunciado_examen.pdf que forma parte del archivo public.tar que puedes descargar en esta página (icono del gatito).

Observación Recomendamos que hagas una copia “limpia” de tu práctica en un subdirectorio aparte y en esa copia lleves a cabo todos los cambios. Verifica que todos los módulos compilan sin errores, que el proceso de montaje da un archivo ejecutable correcto y que el program.exe pasa el juego de pruebas público suministrado. Comprueba que el Makefile genera el fichero program.exe y crea el fichero .tar para hacer el envío al Jutge. Asegúrate que entregas el fichero .tar con la solución del examen, no la solución original.

El Jutge prueba tus entregas mediante 4 juegos de pruebas que, salvo por el cambio del comando #ejecuta_paso_wpgma por el comando #ejecuta_paso_clust, son similares a los usados en la práctica—de hecho son casi iguales, solo algo menos “exigentes” respecto a la eficiencia.

  • sample: el juego de pruebas público
  • privat1: solo distancias entre especies
  • privat2: clusters 1
  • privat3: clusters 2

En un fichero llamado practica.tar debes entregar

  • Los ficheros .hh y .cc de las clases y el programa principal. No incluyas ficheros .o y similares.
  • El fichero Makefile, que usaremos para generar y probar el ejecutable

Ten en cuenta las siguientes restricciones:

  • El fichero que contiene el programa principal se ha de llamar program.cc (recuerda cambiar la opción del main que realiza un paso del algoritmo de construcción del árbol filogenético, para que pase a llamarse ejecuta_paso_clust)
  • El Makefile ha de generar un ejecutable llamado program.exe
  • Es importante que uses las opciones de compilación del Jutge de PRO2 (véase Documentation → Compilers → PRO2 en www.jutge.org)
  • No usar la opción -D_GLIBCXX_DEBUG o usarla de forma incorrecta podrá ser penalizado

Produce el fichero practica.tar con la instrucción Linux

tar -cvf practica.tar fitxer1 fitxer2 fitxer3 ...

desde el directorio/carpeta donde tengas los ficheros que vas a entregar. Incluye esta instrucción en tu Makefile, de forma que el .tar se pueda generar ejecutando make practica.tar. Con eso reduciras el riesgo de error en sucesivas entregas. El Jutge no acepta .tar donde los ficheros estén dentro de carpetas. Recomendamos usar GNU tar para reducir el riesgo de que el fichero practica.tar sea incompatible con el Jutge. No es necesario incluir BinTree.hh en practica.tar.

Public test cases
  • Input

    3
    lee_cjt_especies
    5
    d    GCTCCTGTCCGTTTCAGCCG
    e    TACACCATTAACCGGTGGGG
    a    AAAAGATGACCAGCGTAATG
    b    GCAACCTTTGTGGGCGCAGT
    c    ACGATTTGCGTAAGCTATGT
    
    imprime_cjt_especies
    tabla_distancias
    
    imprime_arbol_filogenetico
    
    crea_especie f    GAAAAAAAAAAAAAAAAAAAAA
    crea_especie g    AAAAAAAAAAAAAAAAAAAAAA
    
    imprime_cjt_especies
    tabla_distancias
    
    imprime_arbol_filogenetico
    
    elimina_especie nuevo1
    crea_especie nuevo1 TTTAAACCCGGG
    
    inicializa_clusters
    
    elimina_especie a
    
    imprime_cjt_especies
    tabla_distancias
    
    ejecuta_paso_clust
    
    imprime_cluster c
    
    ejecuta_paso_clust
    
    imprime_cluster g
    
    imprime_cluster cg
    
    imprime_cluster nuevo1
    
    ejecuta_paso_clust
    
    ejecuta_paso_clust
    
    imprime_cluster cg
    
    crea_especie nuevo2 AATCTGGCTCTGAATAAGACCCAGTATCAAGCCTTACCA
    
    ejecuta_paso_clust
    
    ejecuta_paso_clust
    
    imprime_cluster a
    
    inicializa_clusters
    
    crea_especie nuevo2 AAA
    
    imprime_arbol_filogenetico
    
    
    lee_cjt_especies
    
    0
    
    imprime_cjt_especies
    
    tabla_distancias
    
    imprime_arbol_filogenetico
    
    ejecuta_paso_clust
    
    crea_especie pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    
    imprime_cjt_especies
    
    tabla_distancias
    
    obtener_gen pangolin
    
    imprime_arbol_filogenetico
    
    ejecuta_paso_clust
    
    fin

    Output

    # lee_cjt_especies
    
    # imprime_cjt_especies
    a AAAAGATGACCAGCGTAATG
    b GCAACCTTTGTGGGCGCAGT
    c ACGATTTGCGTAAGCTATGT
    d GCTCCTGTCCGTTTCAGCCG
    e TACACCATTAACCGGTGGGG
    
    # tabla_distancias
    a: b (34.5161) c (47.4937) d (34.2871) e (36.0398)
    b: c (37.1501) d (36.361) e (42.2486)
    c: d (38.6859) e (32.8337)
    d: e (32.58)
    e:
    
    # imprime_arbol_filogenetico
    [(abcde, 19.465) [(ab, 17.258) [a][b]][(cde, 17.8799) [c][(de, 16.29) [d][e]]]]
    
    # crea_especie f GAAAAAAAAAAAAAAAAAAAAA
    
    # crea_especie g AAAAAAAAAAAAAAAAAAAAAA
    
    # imprime_cjt_especies
    a AAAAGATGACCAGCGTAATG
    b GCAACCTTTGTGGGCGCAGT
    c ACGATTTGCGTAAGCTATGT
    d GCTCCTGTCCGTTTCAGCCG
    e TACACCATTAACCGGTGGGG
    f GAAAAAAAAAAAAAAAAAAAAA
    g AAAAAAAAAAAAAAAAAAAAAA
    
    # tabla_distancias
    a: b (34.5161) c (47.4937) d (34.2871) e (36.0398) f (26.0019) g (25.0995)
    b: c (37.1501) d (36.361) e (42.2486) f (16.825) g (16.2562)
    c: d (38.6859) e (32.8337) f (16.2248) g (15.6649)
    d: e (32.58) f (17.3751) g (16.7991)
    e: f (17.3751) g (16.7991)
    f: g (96.3763)
    g:
    
    # imprime_arbol_filogenetico
    [(abfdcge, 17.597) [(abfd, 15.8008) [a][(bfd, 13.434) [(bf, 8.4125) [b][f]][d]]][(cge, 12.4082) [(cg, 7.83246) [c][g]][e]]]
    
    # elimina_especie nuevo1
    ERROR: La especie nuevo1 no existe.
    
    # crea_especie nuevo1 TTTAAACCCGGG
    
    # inicializa_clusters
    a: b (34.5161) c (47.4937) d (34.2871) e (36.0398) f (26.0019) g (25.0995) nuevo1 (37.614)
    b: c (37.1501) d (36.361) e (42.2486) f (16.825) g (16.2562) nuevo1 (38.5622)
    c: d (38.6859) e (32.8337) f (16.2248) g (15.6649) nuevo1 (33.8415)
    d: e (32.58) f (17.3751) g (16.7991) nuevo1 (35.0666)
    e: f (17.3751) g (16.7991) nuevo1 (52.3519)
    f: g (96.3763) nuevo1 (17.6348)
    g: nuevo1 (16.9538)
    nuevo1:
    
    # elimina_especie a
    
    # imprime_cjt_especies
    b GCAACCTTTGTGGGCGCAGT
    c ACGATTTGCGTAAGCTATGT
    d GCTCCTGTCCGTTTCAGCCG
    e TACACCATTAACCGGTGGGG
    f GAAAAAAAAAAAAAAAAAAAAA
    g AAAAAAAAAAAAAAAAAAAAAA
    nuevo1 TTTAAACCCGGG
    
    # tabla_distancias
    b: c (37.1501) d (36.361) e (42.2486) f (16.825) g (16.2562) nuevo1 (38.5622)
    c: d (38.6859) e (32.8337) f (16.2248) g (15.6649) nuevo1 (33.8415)
    d: e (32.58) f (17.3751) g (16.7991) nuevo1 (35.0666)
    e: f (17.3751) g (16.7991) nuevo1 (52.3519)
    f: g (96.3763) nuevo1 (17.6348)
    g: nuevo1 (16.9538)
    nuevo1:
    
    # ejecuta_paso_clust
    a: b (34.5161) cg (36.2966) d (34.2871) e (36.0398) f (26.0019) nuevo1 (37.614)
    b: cg (26.7032) d (36.361) e (42.2486) f (16.825) nuevo1 (38.5622)
    cg: d (27.7425) e (24.8164) f (56.3006) nuevo1 (25.3977)
    d: e (32.58) f (17.3751) nuevo1 (35.0666)
    e: f (17.3751) nuevo1 (52.3519)
    f: nuevo1 (17.6348)
    nuevo1:
    
    # imprime_cluster c
    ERROR: El cluster c no existe.
    
    # ejecuta_paso_clust
    a: bf (30.259) cg (36.2966) d (34.2871) e (36.0398) nuevo1 (37.614)
    bf: cg (41.5019) d (26.8681) e (29.8118) nuevo1 (28.0985)
    cg: d (27.7425) e (24.8164) nuevo1 (25.3977)
    d: e (32.58) nuevo1 (35.0666)
    e: nuevo1 (52.3519)
    nuevo1:
    
    # imprime_cluster g
    ERROR: El cluster g no existe.
    
    # imprime_cluster cg
    [(cg, 7.83246) [c][g]]
    
    # imprime_cluster nuevo1
    [nuevo1]
    
    # ejecuta_paso_clust
    a: bf (30.259) cge (36.211) d (34.2871) nuevo1 (37.614)
    bf: cge (37.6052) d (26.8681) nuevo1 (28.0985)
    cge: d (29.355) nuevo1 (34.3824)
    d: nuevo1 (35.0666)
    nuevo1:
    
    # ejecuta_paso_clust
    a: bfd (31.6017) cge (36.211) nuevo1 (37.614)
    bfd: cge (34.8551) nuevo1 (30.4212)
    cge: nuevo1 (34.3824)
    nuevo1:
    
    # imprime_cluster cg
    ERROR: El cluster cg no existe.
    
    # crea_especie nuevo2 AATCTGGCTCTGAATAAGACCCAGTATCAAGCCTTACCA
    
    # ejecuta_paso_clust
    a: bfdnuevo1 (33.1048) cge (36.211)
    bfdnuevo1: cge (34.737)
    cge:
    
    # ejecuta_paso_clust
    abfdnuevo1: cge (35.0318)
    cge:
    
    # imprime_cluster a
    ERROR: El cluster a no existe.
    
    # inicializa_clusters
    b: c (37.1501) d (36.361) e (42.2486) f (16.825) g (16.2562) nuevo1 (38.5622) nuevo2 (37.3137)
    c: d (38.6859) e (32.8337) f (16.2248) g (15.6649) nuevo1 (33.8415) nuevo2 (34.8546)
    d: e (32.58) f (17.3751) g (16.7991) nuevo1 (35.0666) nuevo2 (37.32)
    e: f (17.3751) g (16.7991) nuevo1 (52.3519) nuevo2 (38.4702)
    f: g (96.3763) nuevo1 (17.6348) nuevo2 (22.5262)
    g: nuevo1 (16.9538) nuevo2 (21.7552)
    nuevo1: nuevo2 (30.6907)
    nuevo2:
    
    # crea_especie nuevo2 AAA
    ERROR: La especie nuevo2 ya existe.
    
    # imprime_arbol_filogenetico
    [(bfdnuevo1cgenuevo2, 17.0217) [(bfdnuevo1, 15.2106) [(bfd, 13.434) [(bf, 8.4125) [b][f]][d]][nuevo1]][(cgenuevo2, 15.8467) [(cge, 12.4082) [(cg, 7.83246) [c][g]][e]][nuevo2]]]
    
    # lee_cjt_especies
    
    # imprime_cjt_especies
    
    # tabla_distancias
    
    # imprime_arbol_filogenetico
    ERROR: El conjunto de clusters es vacio.
    
    # ejecuta_paso_clust
    ERROR: num_clusters <= 1
    
    # crea_especie pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    
    # imprime_cjt_especies
    pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    
    # tabla_distancias
    pangolin:
    
    # obtener_gen pangolin
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    
    # imprime_arbol_filogenetico
    [pangolin]
    
    # ejecuta_paso_clust
    ERROR: num_clusters <= 1
    
    
  • Information
    Author
    PRO2
    Language
    Spanish
    Official solutions
    Make
    User solutions
    Make