def loadLevels (): """ Esta funcion carga la info de las sesiones y levels pero sin cargar la de los trials y touchs. Sirve para cuando la info ya viene preprocesada en el programa online. Por ejemplo los analisis de umbral. """ import os import pandas as pd from scripts.settings import makeSettings from scripts.general import chkVersion chkVersion() makeSettings(basic=True,levels=True) # Primero se carga la info de la estructura json (los touchs y sounds vienen dentro de los trials) if os.path.isfile('./Guardados/db.sessions'): sessions = pd.read_pickle ('./Guardados/db.sessions') else: display ('Warning: no se encontro los session buscados') return if os.path.isfile('./Guardados/db.levels'): levels = pd.read_pickle ('./Guardados/db.levels') else: display ('Warning: no se encontro los levels buscados') return sessions = estetizarTabla(sessions,'sessions') levels = estetizarTabla(levels,'levels') levels = pd.merge(levels, sessions, on='sessionInstance') # Creamos los alias levels = renombrarUsuarios(levels) # Aplicamos los filtros level, code, etc levels = aplicarFiltros(levels) return levels
def loadTouchs (): """ Esta funcion extrae de la base de datos ya separada en registros de sesion, level y trials, y acumulada en archivos locales en formato json dos dataframes uno para touchs y uno para sounds. Para eso mergea los sub json que hay en la db.json del servidor unificando por instancias de level, sesion y trial. Los formatos en que se guardan los json que vienen de la aplicacion resultaron ser muy poco practicos por esa razon es importante reordenarlos. La funcion recibe como parametros un dict settings, que le indica que filtros utilizar para leer los datos y evitar problemas de compatibilidad entre experimentos, versiones de datos, etc. La funcion devuelve dos dataframes uno de touchs y uno de sounds que son la base de la estructura de datos para procesamientos posteriores. """ from scripts.general import chkVersion chkVersion() import pandas as pd import os import numpy as np from IPython.display import display makeSettings(basic=True,levels=False) # Primero se carga la info de la estructura json (los touchs y sounds vienen dentro de los trials) if os.path.isfile('./Guardados/db.sessions'): sessions = pd.read_pickle ('./Guardados/db.sessions') else: display ('Warning: no se encontro los session buscados') return if os.path.isfile('./Guardados/db.levels'): levels = pd.read_pickle ('./Guardados/db.levels') else: display ('Warning: no se encontro los levels buscados') return display ('Numero de sesiones totales encontradas:: ' + str(sessions.index.size)) display ('Numero de levels totales encontrados: ' + str(levels.index.size)) if os.path.isfile('./Guardados/db.trials'): trials = pd.read_pickle ('./Guardados/db.trials') else: display ('Warning: no se encontro los trials buscados') return display ('Numero de sesiones totales encontradas:: ' + str(sessions.index.size)) display ('Numero de levels totales encontrados: ' + str(levels.index.size)) display ('Numero de trials totales encontrados: ' + str(trials.index.size)) display ('Filtrando datos...') # Extraemos los datos de los touchs y sounds de dentro de los json de los trials touchs = pd.concat(pd.DataFrame(x) for x in list(trials['touchLog']) if type(x)==list) # NOTA! : revisar que pasa si vienen mas de un json en un trial sounds = pd.concat(pd.DataFrame(x) for x in list(trials['soundLog']) if type(x)==list) # NOTA! : revisar que pasa si vienen mas de un json en un trial # Procesamos un poco los datos para eliminar info redundante o innecesaria, o para unificar nombres. Para eso se usan los filtros prefijados y configurables. sessions = estetizarTabla(sessions,'sessions') levels = estetizarTabla(levels,'levels') trials = estetizarTabla(trials,'trials') touchs = estetizarTabla(touchs,'touchs') sounds = estetizarTabla(sounds,'sounds') # una vez bien formateada todas las tablas se mergean a travez de las instancias de sesion, level y trial touchs = pd.merge(touchs, trials, on='trialInstance') touchs = pd.merge(touchs, levels, on='levelInstance') touchs = pd.merge(touchs, sessions, on='sessionInstance') sounds = pd.merge(sounds, trials, on='trialInstance') sounds = pd.merge(sounds, levels, on='levelInstance') sounds = pd.merge(sounds, sessions, on='sessionInstance') # Creamos los alias touchs = renombrarUsuarios(touchs) sounds = renombrarUsuarios(sounds) # Aplicamos los filtros level, code, etc touchs = aplicarFiltros(touchs) sounds = aplicarFiltros(sounds) display ('Recursos cargados del archivo') display ('Touchs seleccionados: ' + str(touchs.index.size)) display ('Sounds seleccionados: ' + str(sounds.index.size)) return touchs, sounds