First approach, lectura de texto y gráfica
This commit is contained in:
103
maker.py
Normal file
103
maker.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import pandas as pd
|
||||
from pathlib import Path
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def procesar_archivo_txt(ruta_archivo):
|
||||
try:
|
||||
ruta = Path(ruta_archivo)
|
||||
if not ruta.is_file():
|
||||
raise FileNotFoundError(f"La ruta '{ruta_archivo}' no apunta a un archivo válido.")
|
||||
|
||||
# Leer todas las líneas del archivo
|
||||
with open(ruta, 'r') as archivo:
|
||||
lineas = archivo.readlines()
|
||||
|
||||
# Buscar la cabecera (línea que comienza con 'Sample Index')
|
||||
for i, linea in enumerate(lineas):
|
||||
if linea.startswith("Sample Index"):
|
||||
inicio_datos = i
|
||||
break
|
||||
else:
|
||||
raise ValueError("No se encontró la cabecera en el archivo.")
|
||||
|
||||
# Leer los datos desde la cabecera utilizando pandas
|
||||
datos = pd.read_csv(ruta, skiprows=inicio_datos)
|
||||
|
||||
# Convertir columnas a numéricas donde sea posible
|
||||
for columna in datos.columns:
|
||||
try:
|
||||
datos[columna] = pd.to_numeric(datos[columna], errors='coerce')
|
||||
except Exception as e:
|
||||
print(f"Error al convertir la columna '{columna}': {e}")
|
||||
|
||||
return datos
|
||||
|
||||
except FileNotFoundError as e:
|
||||
print(f"Archivo no encontrado: {e}")
|
||||
except PermissionError as e:
|
||||
print(f"Permiso denegado: {e}")
|
||||
except ValueError as e:
|
||||
print(f"Error de formato en el archivo: {e}")
|
||||
except Exception as e:
|
||||
print(f"Error procesando el archivo: {e}")
|
||||
|
||||
# Ruta al archivo
|
||||
ruta = r"C:\Users\lumon\Desktop\OpenBCI-RAW-2024-10-10_17-56-37.txt"
|
||||
df = procesar_archivo_txt(ruta)
|
||||
|
||||
if df is not None:
|
||||
print(df.columns)
|
||||
|
||||
def graficar_datos(df):
|
||||
# Eliminar espacios extra en los nombres de las columnas
|
||||
df.columns = df.columns.str.strip()
|
||||
|
||||
# Verificar si la columna 'Timestamp' está presente
|
||||
if 'Timestamp' not in df.columns:
|
||||
print("La columna 'Timestamp' no se encuentra en el archivo.")
|
||||
return
|
||||
|
||||
# Si el archivo tiene un Timestamp y lo queremos graficar, convertir a formato datetime
|
||||
df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce') # Convertir a datetime
|
||||
|
||||
# Graficar algunos canales de EXG en función del tiempo
|
||||
plt.figure(figsize=(12, 6))
|
||||
|
||||
# Graficar EXG Channel 0, 1, 2
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 0'], label='EXG Channel 0')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 1'], label='EXG Channel 1')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 2'], label='EXG Channel 2')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 3'], label='EXG Channel 3')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 4'], label='EXG Channel 4')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 5'], label='EXG Channel 5')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 6'], label='EXG Channel 6')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 7'], label='EXG Channel 7')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 8'], label='EXG Channel 8')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 9'], label='EXG Channel 9')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 10'], label='EXG Channel 10')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 11'], label='EXG Channel 11')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 12'], label='EXG Channel 12')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 13'], label='EXG Channel 13')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 14'], label='EXG Channel 14')
|
||||
plt.plot(df['Timestamp'], df['EXG Channel 15'], label='EXG Channel 15')
|
||||
|
||||
|
||||
# Títulos y etiquetas
|
||||
plt.title("Señales de Canales EXG a lo largo del Tiempo")
|
||||
plt.xlabel("Tiempo (Timestamp)")
|
||||
plt.ylabel("Valor de la señal (µV)")
|
||||
|
||||
# Agregar leyenda
|
||||
plt.legend()
|
||||
|
||||
# Mejorar el formato de las fechas en el eje X
|
||||
plt.xticks(rotation=45)
|
||||
|
||||
# Mostrar la gráfica
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Supongamos que df es el DataFrame procesado anteriormente
|
||||
if df is not None:
|
||||
graficar_datos(df)
|
Reference in New Issue
Block a user