Example #1
0
    def __init__(self, window, conf_file):
        # Ventana principal
        self.window = window
        # Selecciono el diccionario general y el de los patrones en el archivo de configuración
        self.pattern_dic = conf_file["patterns"]
        self.general_dic = conf_file["general"]
        self.ruta_inicial = self.general_dic["ruta_inicial"]

        #Inicializo una tupla de mensajes
        self.__msg = CT.msg()
Example #2
0
def pdfatexto(arch_sel):
    """Función que convierte el pdf a texto raw

        Arg:
            arch_sel: Ruta y nombre del archivo pfd a convertir a texto
    """

    # Inicializo el objeto que acumula los mensajes en una tupla.
    msg = CT.msg()

    # Nombre del archivo pdf original a evaluar
    file_orig = os.path.basename(arch_sel)
    # Nombre de la ruta original
    ruta_orig = os.path.dirname(arch_sel) + '/'
    # Nombre del archivo convertido a modo texto
    filename = os.path.splitext(file_orig)[0] + ".txt"

    logger.info("-- Convierto archivo pdf a texto")
    logger.info("Archivo original: %s" % arch_sel)
    logger.info("Archivo original Tipo: %s" % type(arch_sel))
    logger.debug("Archivo modo texto: %s" % filename)

    # Si no existe el archivo indicado
    if not os.path.isfile(arch_sel):
        msg.error("No existe el archivo: %s" % file_orig)
        msg.print_tMsg()
        sys.exit()
    # Si no hay un archivo pdf ya convertido con el mismo nombre en el destino => Convierto el archivo indicado
    elif not os.path.isfile(ruta_orig + filename):
        # subprocess.call(["df","-h","/home"])
        subprocess.call([
            "pdftotext", "-f", "1", "-l", "1", "-raw", arch_sel,
            str(ruta_orig + filename)
        ])
        msg.info("Archivo: %s convertido a texto" % file_orig)
    # Si llegó acá es porque ya existe un archivo convertido con el mismo nombre.
    else:
        msg.warning(
            "El archivo: %s ya tiene un archivo convertido a texto con el mismo nombre"
            % file_orig)

    msg.print_tMsg()
    return msg.get_tMsg()
Example #3
0
def pdfatexto(arch_sel):
    """Función que convierte el pdf a texto raw

        Arg:
            arch_sel: Ruta y nombre del archivo pfd a convertir a texto
    """

    # Inicializo el objeto que acumula los mensajes en una tupla.
    msg = CT.msg()

    # Nombre del archivo pdf original a evaluar
    file_orig = os.path.basename(arch_sel)
    # Nombre de la ruta original
    ruta_orig = os.path.dirname(arch_sel) + '/'
    # Nombre del archivo convertido a modo texto
    filename = os.path.splitext(file_orig)[0] + ".txt"

    logger.info("-- Convierto archivo pdf a texto")
    logger.info("Archivo original: %s" % arch_sel)
    logger.info("Archivo original Tipo: %s" % type(arch_sel))
    logger.debug("Archivo modo texto: %s" % filename)

    # Si no existe el archivo indicado
    if not os.path.isfile(arch_sel):
        msg.error("No existe el archivo: %s" % file_orig)
        msg.print_tMsg()
        sys.exit()
    # Si no hay un archivo pdf ya convertido con el mismo nombre en el destino => Convierto el archivo indicado
    elif not os.path.isfile(ruta_orig + filename):
        # subprocess.call(["df","-h","/home"])
        subprocess.call(["pdftotext", "-f", "1", "-l", "1", "-raw", arch_sel, str(ruta_orig + filename)])
        msg.info("Archivo: %s convertido a texto" % file_orig)
    # Si llegó acá es porque ya existe un archivo convertido con el mismo nombre.
    else:
        msg.warning("El archivo: %s ya tiene un archivo convertido a texto con el mismo nombre" % file_orig)

    msg.print_tMsg()
    return  msg.get_tMsg()
Example #4
0
def arch_magic(general_dic, pattern_dic, arch_sel):
    """Función que analiza un archivo pdf y lo compara con un diccionario de patrones

        data_dic: diccionario con la información de los patrones, nombre del archivo de salida,etc.
        ruta_orig: ruta desde donde analizo los archivos.
        file_original: nombre del archivo original a analizar
    """

    # Inicializo el objeto que acumula los mensajes en una tupla.
    msg = CT.msg()

    # Nombre del archivo pdf original a evaluar. Lo codifico en utf-8 para no tener problemas
    file_orig = os.path.basename(arch_sel)
    # Nombre de la ruta original. Lo codifico en utf-8 para no tener problemas
    ruta_orig = os.path.dirname(arch_sel) + '/'
    # Nombre del archivo convertido a modo texto
    filename = os.path.splitext(file_orig)[0] + ".txt"

    msg.info("-- Archivo original: %s --\nRuta original: %s" % (file_orig, ruta_orig))
    logger.info("-- Archivo original: %s -- Ruta original: %s" % (file_orig, ruta_orig))

    logger.debug("Archivo modo texto: %s" % filename)

    if not os.path.isfile(ruta_orig + file_orig):
        logger.debug("No existe el archivo: %s" % file_orig)
        sys.exit()

    # Si el pdf no está convertido a texto lo convierto
    msg.info(pdfatexto(arch_sel))

    # Abro el archivo de texto en modo lectura y cargo el contenido del archivo de texto a una variable
    with open(ruta_orig + filename, "r") as dataFile:
        fullData = dataFile.read()
        # fullData = dataFile.read().splitlines()

    logger.debug("-- Acá comienza el bucle --")
    comp_ok = False
    file_sal = ''   # Variable con el nombre del archivo de salida
    subdir_destino = '' # Variable con el nombre del subdirectorio de salida (Para el caso de opción group_all).
    # Ordeno y recorro el diccionario de patrones.
    for item_conf in sorted(pattern_dic):
        logger.debug('-- Analizando el patrón ...%s' % item_conf)

        # Defino ruta destino para guardar el archivo
        # Si existe una ruta especial uso esa, sino uso ruta general definida al principio del archivo de configuración.
        # Python raises a KeyError whenever a dict() object is requested (using the format a = adict[key])
        # and the key is not in the dictionary. If you don't want to have an exception but would rather a default value
        #  used instead, you can use the get() method:
        ruta_default_dest = general_dic["ruta_destino"]
        ruta_destino = pattern_dic[item_conf].get('ruta_destino', ruta_default_dest)

        # Recupero las opciones específicas del patrón, si no están definidas me quedo con las generales.
        pattern_opt_default = general_dic['pattern_opt']
        pattern_opt = pattern_dic[item_conf].get('pattern_opt', pattern_opt_default)
        copia_destino_default = pattern_opt_default.get('copia_destino')
        copia_destino = pattern_opt.get('copia_destino', copia_destino_default)

        # Patrón a utilizar "pattern", variable con el resultado de la comparación "comp"
        logger.debug(type(pattern_dic[item_conf]['pattern']))
        pattern = r'%s' % pattern_dic[item_conf]['pattern']
        logger.debug('pattern: %s' % type(pattern))
        logger.debug("pattern: %s" % pattern)
        comp = re.search(pattern, fullData, flags=re.DOTALL | re.MULTILINE | re.IGNORECASE)
        if comp:
            logger.info("Coincidencia con el patrón analizado (%s)" % item_conf)
            msg.info("Coincidencia con el patrón analizado (%s)" % item_conf)
            logger.debug("Cantidad de Grupos: %s" % len(comp.groups()))
            # Formateo del nombre del archivo de salida. Convierto la cadena file_salida separada por comas en la tupla ftxt_sal.
            ftxt_sal = tuple(pattern_dic[item_conf]['file_salida'].split(','))
            # Armo de a pedazos el nombre del archivo de salida.
            for kk in ftxt_sal:
                # Si es un entero el nombre corresponde al grupo regex, si al string definido en el archivo conf.
                try:
                    kk = int(kk)
                    vg = comp.group(kk)
                    #print 'Es numerico -> Grupo, Valor:', kk, vg
                except ValueError:
                    vg = kk
                    #print 'Es una Cadena -> Valor:', vg
                file_sal += vg
            file_sal += '.pdf'
            logger.info('Nombre nuevo archivo: %s' % file_sal)
            msg.info('Nombre nuevo archivo: %s' % file_sal)

            # Si está definida group_all tengo que meter el archivo y los directorios adyacentes todos juntos en el
            # destino agrupandolos en un subdirectorio.
            group_all_default = ''
            group_all = pattern_dic[item_conf].get('group_all', group_all_default)
            if (group_all != '' and copia_destino):
                logger.info('Se agrupa a subdirectorio')
                msg.info('Se agrupa a subdirectorio')
                # Formateo del nombre del subdirectorio de destino. Convierto la cadena group_all separada por comas
                # en la tupla subdirtxt_dest.
                subdirtxt_dest = tuple(group_all.split(','))
                logger.debug('Tipo para subdirtxt_dest: %s - %s' % (type(subdirtxt_dest), subdirtxt_dest))
                # Armo de a pedazos el nombre del subdirectorio destino.
                for dkey in subdirtxt_dest:
                    # Si es un entero el nombre corresponde al grupo regex, sino al string definido en el archivo conf.
                    try:
                        dkey = int(dkey)
                        vdg = comp.group(dkey)
                    except ValueError:
                        vdg = dkey

                    subdir_destino += vdg
                subdir_destino += '/'

                # Verifico que el subdirectorio no exista en el destino
                logger.info('Creando el subdirectorio en el destino.')
                nueva_ruta_destino = ruta_destino + subdir_destino
                msg.info(' - Ruta destino: %s' % nueva_ruta_destino)
                logger.info(' - Ruta destino: %s' % nueva_ruta_destino)
                if not os.path.exists(nueva_ruta_destino):
                    # Verifico que el destino exista y tenga permiso de escritura
                    if copia_destino and check_path(ruta_destino,is_dir=True):
                        os.makedirs(nueva_ruta_destino) # Creo el subdirectorio

                        logger.debug('Copio el archivo y los directorios adyacentes al subdirectorio destino.')

                        # Copio el archivo pdf
                        shutil.copy2(ruta_orig + file_orig, nueva_ruta_destino + file_sal)
                        msg.info('\tSe copió el archivo')
                        logger.info('\tSe copió el archivo')

                        # Copio los directorios adyacentes al sudirectorio destino
                        subdir_ady = os.walk(ruta_orig).next()[1]
                        for ix_subd in subdir_ady:
                            shutil.copytree(ruta_orig + ix_subd, nueva_ruta_destino + ix_subd)
                            msg.info('\tDirectorios adyacentes copiados: %s' % ix_subd)
                            logger.info('\tDirectorios adyacentes copiados: %s' % ix_subd)
                    else:
                        msg.warning('Atención: El directorio destino no existe o no tengo permisos de escritura.')
                        group_all_ok = False
                else:
                    msg.warning('Atención: Ya existe un archivo/directorio con el mismo nombre en el destino.')
                    logger.info('Atención: Ya existe un archivo/directorio con el mismo nombre en el destino.')
                    group_all_ok = False

            else:
                # No hay agrupamiento a subdirectorio => Solo copio el archivo
                logger.info('No agrupo a subdirectorio')
                # Verifico que no exista el archivo
                if copia_destino and not os.path.isfile(ruta_destino + file_sal):
                    logger.debug('Entro al bucle de copia 1')
                    if os.access(ruta_destino, os.W_OK):
                        logger.debug('Entro al bucle de copia 2')
                        logger.debug('Copiando archivo %s %s %s %s' % (ruta_orig, file_orig, ruta_destino, file_sal))
                        # Creo una copia y renombro el archivo
                        shutil.copy2(ruta_orig + file_orig, ruta_destino + file_sal)
                        msg.info('Se copió el archivo - Directorio destino: %s' % ruta_destino)
                        logger.info('Se copió el archivo - Directorio destino: %s' % ruta_destino)

                else:
                    logger.debug('Entro al bucle de copia 3')
                    msg.warning('Atención: No copio el archivo porque ya existe un archivo/directorio con el mismo nombre en el destino.')
                    logger.info('Atención: No copio el archivo porque ya existe un archivo/directorio con el mismo nombre en el destino.')
                    #sys.exit('Atención: No muevo el archivo porque ya existe un archivo/directorio con el mismo nombre en el destino.')

            # Renombro el archivo en el lugar
            if not os.path.isfile(ruta_orig + file_sal):
                shutil.move(ruta_orig + file_orig, ruta_orig + file_sal)
                msg.info('Se renombró el archivo en el origen.')
                logger.info('Se renombro el archivo en el origen.')
            else:
                msg.warning('Atención: No renombro el archivo en el directorio de origen porque ya existe uno con el mismo nombre.')
                logger.info('Atención: No renombro el archivo en el directorio de origen porque ya existe uno con el mismo nombre.')

            # Asigno valor a la variable que indica que hubo coincidencia y salgo del bucle.
            comp_ok = True
            break   # A la primera coincidencia salgo del bucle.

        else:
            logger.debug("-- El patrón: %s no coincide con el archivo analizado --" % item_conf)

    # Si no coincide ningún patrón.
    if not comp_ok:
        msg.warning('-- Ningún Patrón conocido coincide con el archivo %s analizado --' % file_orig)
        logger.info('-- Ningún Patrón conocido coincide con el archivo %s analizado --' % file_orig)


    # Borro el archivo convertido a texto
    if os.path.isfile(ruta_orig + filename):
        os.remove(ruta_orig + filename)

    return msg.get_tMsg()
Example #5
0
def arch_magic(general_dic, pattern_dic, arch_sel):
    """Función que analiza un archivo pdf y lo compara con un diccionario de patrones

        data_dic: diccionario con la información de los patrones, nombre del archivo de salida,etc.
        ruta_orig: ruta desde donde analizo los archivos.
        file_original: nombre del archivo original a analizar
    """

    # Inicializo el objeto que acumula los mensajes en una tupla.
    msg = CT.msg()

    # Nombre del archivo pdf original a evaluar. Lo codifico en utf-8 para no tener problemas
    file_orig = os.path.basename(arch_sel)
    # Nombre de la ruta original. Lo codifico en utf-8 para no tener problemas
    ruta_orig = os.path.dirname(arch_sel) + '/'
    # Nombre del archivo convertido a modo texto
    filename = os.path.splitext(file_orig)[0] + ".txt"

    msg.info("-- Archivo original: %s --\nRuta original: %s" %
             (file_orig, ruta_orig))
    logger.info("-- Archivo original: %s -- Ruta original: %s" %
                (file_orig, ruta_orig))

    logger.debug("Archivo modo texto: %s" % filename)

    if not os.path.isfile(ruta_orig + file_orig):
        logger.debug("No existe el archivo: %s" % file_orig)
        sys.exit()

    # Si el pdf no está convertido a texto lo convierto
    msg.info(pdfatexto(arch_sel))

    # Abro el archivo de texto en modo lectura y cargo el contenido del archivo de texto a una variable
    with open(ruta_orig + filename, "r") as dataFile:
        fullData = dataFile.read()
        # fullData = dataFile.read().splitlines()

    logger.debug("-- Acá comienza el bucle --")
    comp_ok = False
    file_sal = ''  # Variable con el nombre del archivo de salida
    subdir_destino = ''  # Variable con el nombre del subdirectorio de salida (Para el caso de opción group_all).
    # Ordeno y recorro el diccionario de patrones.
    for item_conf in sorted(pattern_dic):
        logger.debug('-- Analizando el patrón ...%s' % item_conf)

        # Defino ruta destino para guardar el archivo
        # Si existe una ruta especial uso esa, sino uso ruta general definida al principio del archivo de configuración.
        # Python raises a KeyError whenever a dict() object is requested (using the format a = adict[key])
        # and the key is not in the dictionary. If you don't want to have an exception but would rather a default value
        #  used instead, you can use the get() method:
        ruta_default_dest = general_dic["ruta_destino"]
        ruta_destino = pattern_dic[item_conf].get('ruta_destino',
                                                  ruta_default_dest)

        # Recupero las opciones específicas del patrón, si no están definidas me quedo con las generales.
        pattern_opt_default = general_dic['pattern_opt']
        pattern_opt = pattern_dic[item_conf].get('pattern_opt',
                                                 pattern_opt_default)
        copia_destino_default = pattern_opt_default.get('copia_destino')
        copia_destino = pattern_opt.get('copia_destino', copia_destino_default)

        # Patrón a utilizar "pattern", variable con el resultado de la comparación "comp"
        logger.debug(type(pattern_dic[item_conf]['pattern']))
        pattern = r'%s' % pattern_dic[item_conf]['pattern']
        logger.debug('pattern: %s' % type(pattern))
        logger.debug("pattern: %s" % pattern)
        comp = re.search(pattern,
                         fullData,
                         flags=re.DOTALL | re.MULTILINE | re.IGNORECASE)
        if comp:
            logger.info("Coincidencia con el patrón analizado (%s)" %
                        item_conf)
            msg.info("Coincidencia con el patrón analizado (%s)" % item_conf)
            logger.debug("Cantidad de Grupos: %s" % len(comp.groups()))
            # Formateo del nombre del archivo de salida. Convierto la cadena file_salida separada por comas en la tupla ftxt_sal.
            ftxt_sal = tuple(pattern_dic[item_conf]['file_salida'].split(','))
            # Armo de a pedazos el nombre del archivo de salida.
            for kk in ftxt_sal:
                # Si es un entero el nombre corresponde al grupo regex, si al string definido en el archivo conf.
                try:
                    kk = int(kk)
                    vg = comp.group(kk)
                    #print 'Es numerico -> Grupo, Valor:', kk, vg
                except ValueError:
                    vg = kk
                    #print 'Es una Cadena -> Valor:', vg
                file_sal += vg
            file_sal += '.pdf'
            logger.info('Nombre nuevo archivo: %s' % file_sal)
            msg.info('Nombre nuevo archivo: %s' % file_sal)

            # Si está definida group_all tengo que meter el archivo y los directorios adyacentes todos juntos en el
            # destino agrupandolos en un subdirectorio.
            group_all_default = ''
            group_all = pattern_dic[item_conf].get('group_all',
                                                   group_all_default)
            if (group_all != '' and copia_destino):
                logger.info('Se agrupa a subdirectorio')
                msg.info('Se agrupa a subdirectorio')
                # Formateo del nombre del subdirectorio de destino. Convierto la cadena group_all separada por comas
                # en la tupla subdirtxt_dest.
                subdirtxt_dest = tuple(group_all.split(','))
                logger.debug('Tipo para subdirtxt_dest: %s - %s' %
                             (type(subdirtxt_dest), subdirtxt_dest))
                # Armo de a pedazos el nombre del subdirectorio destino.
                for dkey in subdirtxt_dest:
                    # Si es un entero el nombre corresponde al grupo regex, sino al string definido en el archivo conf.
                    try:
                        dkey = int(dkey)
                        vdg = comp.group(dkey)
                    except ValueError:
                        vdg = dkey

                    subdir_destino += vdg
                subdir_destino += '/'

                # Verifico que el subdirectorio no exista en el destino
                logger.info('Creando el subdirectorio en el destino.')
                nueva_ruta_destino = ruta_destino + subdir_destino
                msg.info(' - Ruta destino: %s' % nueva_ruta_destino)
                logger.info(' - Ruta destino: %s' % nueva_ruta_destino)
                if not os.path.exists(nueva_ruta_destino):
                    # Verifico que el destino exista y tenga permiso de escritura
                    if copia_destino and check_path(ruta_destino, is_dir=True):
                        os.makedirs(
                            nueva_ruta_destino)  # Creo el subdirectorio

                        logger.debug(
                            'Copio el archivo y los directorios adyacentes al subdirectorio destino.'
                        )

                        # Copio el archivo pdf
                        shutil.copy2(ruta_orig + file_orig,
                                     nueva_ruta_destino + file_sal)
                        msg.info('\tSe copió el archivo')
                        logger.info('\tSe copió el archivo')

                        # Copio los directorios adyacentes al sudirectorio destino
                        subdir_ady = os.walk(ruta_orig).next()[1]
                        for ix_subd in subdir_ady:
                            shutil.copytree(ruta_orig + ix_subd,
                                            nueva_ruta_destino + ix_subd)
                            msg.info('\tDirectorios adyacentes copiados: %s' %
                                     ix_subd)
                            logger.info(
                                '\tDirectorios adyacentes copiados: %s' %
                                ix_subd)
                    else:
                        msg.warning(
                            'Atención: El directorio destino no existe o no tengo permisos de escritura.'
                        )
                        group_all_ok = False
                else:
                    msg.warning(
                        'Atención: Ya existe un archivo/directorio con el mismo nombre en el destino.'
                    )
                    logger.info(
                        'Atención: Ya existe un archivo/directorio con el mismo nombre en el destino.'
                    )
                    group_all_ok = False

            else:
                # No hay agrupamiento a subdirectorio => Solo copio el archivo
                logger.info('No agrupo a subdirectorio')
                # Verifico que no exista el archivo
                if copia_destino and not os.path.isfile(ruta_destino +
                                                        file_sal):
                    logger.debug('Entro al bucle de copia 1')
                    if os.access(ruta_destino, os.W_OK):
                        logger.debug('Entro al bucle de copia 2')
                        logger.debug(
                            'Copiando archivo %s %s %s %s' %
                            (ruta_orig, file_orig, ruta_destino, file_sal))
                        # Creo una copia y renombro el archivo
                        shutil.copy2(ruta_orig + file_orig,
                                     ruta_destino + file_sal)
                        msg.info(
                            'Se copió el archivo - Directorio destino: %s' %
                            ruta_destino)
                        logger.info(
                            'Se copió el archivo - Directorio destino: %s' %
                            ruta_destino)

                else:
                    logger.debug('Entro al bucle de copia 3')
                    msg.warning(
                        'Atención: No copio el archivo porque ya existe un archivo/directorio con el mismo nombre en el destino.'
                    )
                    logger.info(
                        'Atención: No copio el archivo porque ya existe un archivo/directorio con el mismo nombre en el destino.'
                    )
                    #sys.exit('Atención: No muevo el archivo porque ya existe un archivo/directorio con el mismo nombre en el destino.')

            # Renombro el archivo en el lugar
            if not os.path.isfile(ruta_orig + file_sal):
                shutil.move(ruta_orig + file_orig, ruta_orig + file_sal)
                msg.info('Se renombró el archivo en el origen.')
                logger.info('Se renombro el archivo en el origen.')
            else:
                msg.warning(
                    'Atención: No renombro el archivo en el directorio de origen porque ya existe uno con el mismo nombre.'
                )
                logger.info(
                    'Atención: No renombro el archivo en el directorio de origen porque ya existe uno con el mismo nombre.'
                )

            # Asigno valor a la variable que indica que hubo coincidencia y salgo del bucle.
            comp_ok = True
            break  # A la primera coincidencia salgo del bucle.

        else:
            logger.debug(
                "-- El patrón: %s no coincide con el archivo analizado --" %
                item_conf)

    # Si no coincide ningún patrón.
    if not comp_ok:
        msg.warning(
            '-- Ningún Patrón conocido coincide con el archivo %s analizado --'
            % file_orig)
        logger.info(
            '-- Ningún Patrón conocido coincide con el archivo %s analizado --'
            % file_orig)

    # Borro el archivo convertido a texto
    if os.path.isfile(ruta_orig + filename):
        os.remove(ruta_orig + filename)

    return msg.get_tMsg()
Example #6
0
# Establezco un objeto logger y su nombre
logger = logging.getLogger(__name__)


# Páginas para implementar la GUI

import ClasesGui as CG
import ClassTools as CT

# Declaro la Ventana principal de la GUI
root = Tk()

result = CG.TkGui(root,default_side=LEFT)

mensaje = CT.msg()
mensaje.info('Es una información')
mensaje.error('Es un error')
mensaje.warning('Es una advertencia')
mensaje.getMsg()
result.msg_text(mensaje.getMsg())
#result.mostrar()


#msg = (('Un mensaje informativo','info'),('Otro mensaje informativo','info'),('Un mensaje de advertencia','warning'),
#       ('Este mensaje final es de error','error'))
#result.msg_text(msg)

result.mensaje('La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa y sigue sigue la cosa '
               'La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa '
               'La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa ')
Example #7
0
def main(argv):
    if len(argv) == 0:
        # print 'Usage: my_program command --option <argument>'
        print(__doc__)
    else:
        args = docopt(__doc__, argv=argv)
        if args['aggregate_labels']:
            with tempfile.TemporaryDirectory() as tmpdir:
                scrapping.scrap(args['<bundles_dir>'], tmpdir)
                notcut_trees = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_notcut_trees.txt'
                notcut_priors = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_notcut_priors.csv'
                cut_trees = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_cut_trees.txt'
                split_trees = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_split_trees.txt'
                withdummy_trees = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_withdummy_trees.txt'
                cut_priors = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_cut_priors.csv'
                split_priors = args['<out_dir>'] + '/' + args[
                    '<prefix>'] + '_split_priors.csv'
                out_df = args['<out_dir>'] + '/' + args['<prefix>'] + '_df.csv'
                lt.aggregate_labels_from_bundles_to_trees(
                    args['<all_trees.txt>'], tmpdir, notcut_trees)
                tt.remove_duplicate_nodes(notcut_trees, notcut_trees)
                print('Duplicate nodes were removed.')
                tt.translate_list_of_trees(notcut_trees, notcut_trees)
                print('Trees were translated.')
                lt.remove_2nd_tags(notcut_trees)
                print('2nd tags were removed.')
                lt.print_label_priors(notcut_trees, notcut_priors)
                lt.cut_non_labeled_branches(notcut_trees, cut_trees)
                print('Non-labeled branches were cut.')
                lt.apply_split_labels_to_trees(cut_trees, split_trees)
                lt.print_label_priors(split_trees, split_priors)
                print('Split labels were applied.')
                lt.apply_start_split_end_labels_to_trees(
                    cut_trees, withdummy_trees)
                print('Start-Split-End labels were applied.')
                lt.print_label_priors(cut_trees, cut_priors)
                lt.create_data_csv(split_trees, out_df)
                print('Labels aggregated successfully.')
        if args['rename_labels']:
            lt.rename_labels(args['<in_file>'], args['<out_file>'])
        if args['rename_tags_in_trees']:
            lt.rename_tags_in_trees(args['<trees.txt>'],
                                    args['<out_trees.txt>'])
        if args['rename_tags_in_df']:
            lt.rename_tags_in_df(args['<df.csv>'], args['<out_df.csv>'])
        if args['create_bundles']:
            tt.create_bundles(args['<all_trees.txt>'], args['<tree_ids>'],
                              args['<out_dir>'])
        if args['rework_labels']:
            lt.rework_labels(args['<labeled_trees.txt>'],
                             args['<rework_settings.txt>'],
                             args['<out_trees.txt>'])
        if args['create_df']:
            lt.create_data_csv(args['<labeled_trees.txt>'],
                               args['<out_df.csv>'], args['--rework_settings'],
                               args['--ignore_deleted'])
        if args['print']:
            if args['dis_branch']:
                dst.print_branch(trees_path=args['<trees.txt>'],
                                 probas_path=args['<probas.dispr>'],
                                 branch_atlas_id=args['<branch_atlas_id>'],
                                 out_file=args['<out_file.csv>'])

            if args['dis_tags_npmi']:
                dst.print_dis_tags_npmi(trees_path=args['<trees.txt>'],
                                        probas_path=args['<probas.dispr>'],
                                        out_file=args['<out.csv>'],
                                        just_count=args['--just_count'],
                                        just_pmi=args['--just_pmi'])
            if args['tags_npmi']:
                lt.print_tags_npmi_table(args['<labeled_trees.txt>'],
                                         args['<out.csv>'],
                                         args['--just_count'], args['--log'])
            if args['label_priors']:
                lt.print_label_priors(args['<labeled_trees.txt>'],
                                      args['<out.csv>'], args['--per_tree'])

            if args['label_details']:
                lt.print_label_details(args['<labeled_trees.txt>'],
                                       args['<out.csv>'])

            if args['label_cooc_lists']:
                lt.print_label_cooc_lists(args['<labeled_trees.txt>'],
                                          args['<out.csv>'])

            if args['label_passes']:
                lt.print_label_passes(args['<labeled_trees.txt>'],
                                      args['<out_dir>'])

            if args['label_ngrams']:
                lt.print_label_ngrams(
                    args['<labeled_trees.txt>'], args['<out_dir>'],
                    [int(n) for n in args['<n1,n2,n3>'].split(',')])

            if args['forward_backward_transitions']:
                lt.print_forward_backward_transitions(
                    args['<labeled_trees.txt>'], args['<out_dir>'],
                    [int(n) for n in args['<n1,n2,n3>'].split(',')])

            if args['label_ngram_lists']:
                lt.print_label_ngram_lists(
                    args['<labeled_trees.txt>'], args['<out_file>'],
                    [int(n) for n in args['<n1,n2,n3>'].split(',')],
                    args['<min_count>'])

            if args['trees_statistics']:
                tt.create_list_of_trees_statistics(args['<trees.txt>'],
                                                   args['<stats.csv>'])

            if args['label_stats']:
                trees_path = args['<trees.txt>']
                out_dir = args['<stats_dir>']
                priors_csv = out_dir + '/priors.csv'
                npmi = out_dir + '/npmi.csv'
                correlation_log = out_dir + '/corr_log.txt'
                pmi = out_dir + '/pmi.csv'
                matthews = out_dir + '/matthews_correlation.csv'
                together_counts = out_dir + '/together_counts.csv'
                general_stats = out_dir + '/general_stats.csv'
                lt.print_label_ngrams(trees_path, out_dir, [2, 3, 4, 5, 6, 7])
                lt.print_label_priors(trees_path, priors_csv)
                lt.print_tags_npmi_table(trees_path,
                                         npmi,
                                         log_file=correlation_log)
                lt.print_tags_npmi_table(trees_path, pmi, just_pmi=True)
                lt.print_tags_npmi_table(trees_path,
                                         together_counts,
                                         just_count=True)
                tt.create_list_of_trees_statistics(trees_path, general_stats)
                lt.print_tags_matthews(trees_path, matthews)

        if args['grid_search']:
            cv = None
            if args['--cv']:
                cv = int(args['--cv'])
            target_tags = None
            if args['--target_tags']:
                target_tags = args['--target_tags'].split(',')
            split_tags = None
            if args['--split_tags']:
                split_tags = [int(i) for i in args['--split_tags'].split(',')]
            adders = args['--adders']
            ct.grid_search(args['<data_prefix>'],
                           args['<pipe_prefix>'],
                           args['<params_prefix>'],
                           adders=adders,
                           cv=cv,
                           split_tags=split_tags,
                           target_tags=target_tags)

        if args['train_test']:
            target_tags = None
            if args['--target_tags']:
                target_tags = args['--target_tags'].split(',')
            adders = args['--adders']
            cls = args['--cls']
            ct.train_test(args['<train>'],
                          args['<test>'],
                          args['<pipe>'],
                          args['<params>'],
                          args['<mode>'],
                          classifier=cls,
                          target_tags=target_tags,
                          adders=adders)

        if args['aggregate_train_test']:
            target_tags = None
            if args['--target_tags']:
                target_tags = args['--target_tags'].split(',')
            adders = args['--adders']
            cls = args['--cls']
            ct.aggregate_traintest(args['<train>'],
                                   args['<test>'],
                                   args['<pipe>'],
                                   args['<params>'],
                                   args['<mode>'],
                                   classifier=cls,
                                   target_tags=target_tags,
                                   adders=adders)

        if args['lstmsa']:
            ct.lstm_sa(data_prefix=args['<data_prefix>'],
                       target_tags=args['--target_tags'],
                       pipes=args['<pipes>'],
                       hidden_dims=args['<hidden_dims>'])

        if args['aggregate_scores']:
            ct.aggregate_scores(args['<data_prefix>'], args['<pipe_prefix>'])

        if args['aggregate_scores_lstmsa']:
            ct.aggregate_scores_lstmsa(args['<data_prefix>'], args['--tags'])

        if args['create_doc2vec_train_file']:
            ft.create_d2vtrain_lines(args['<trees.txt>'],
                                     args['<out_file.txt>'])

        if args['train_doc2vec']:
            ft.train_doc2vec(args['<train_file.txt>'], args['<out_model.txt>'],
                             int(args['<epochs>']), int(args['<dim>']))

        if args['prefit_adders']:
            ft.prefit_adders(args['<data_prefix>'], args['--adders'])

        if args['prepare_dissent']:
            dst.run_trees(args['<trees.txt>'], args['<out_path>'])

        if args['merge_disprobas']:
            dst.merge_probas(probas_dir=args['<probas_dir>'],
                             out_path=args['<out_file.dispr>'])
Example #8
0
import logging

# Establezco un objeto logger y su nombre
logger = logging.getLogger(__name__)

# Páginas para implementar la GUI

import ClasesGui as CG
import ClassTools as CT

# Declaro la Ventana principal de la GUI
root = Tk()

result = CG.TkGui(root, default_side=LEFT)

mensaje = CT.msg()
mensaje.info('Es una información')
mensaje.error('Es un error')
mensaje.warning('Es una advertencia')
mensaje.getMsg()
result.msg_text(mensaje.getMsg())
#result.mostrar()

#msg = (('Un mensaje informativo','info'),('Otro mensaje informativo','info'),('Un mensaje de advertencia','warning'),
#       ('Este mensaje final es de error','error'))
#result.msg_text(msg)

result.mensaje(
    'La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa y sigue sigue la cosa '
    'La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa '
    'La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa La sarasa '