diff --git a/.ipynb_checkpoints/TestEtiquetado-checkpoint.ipynb b/.ipynb_checkpoints/TestEtiquetado-checkpoint.ipynb
new file mode 100644
index 0000000..0264c45
--- /dev/null
+++ b/.ipynb_checkpoints/TestEtiquetado-checkpoint.ipynb
@@ -0,0 +1,538 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "5fe31b7f-2243-4587-9740-46164846cff3",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:41.300262Z",
+ "start_time": "2025-02-13T20:09:41.297886Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "from datetime import datetime"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "cbb445af-6351-43b0-8142-f9aa35388e6e",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:41.308855Z",
+ "start_time": "2025-02-13T20:09:41.306360Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "logs_path = \"join/mergedLog_output.txt\"\n",
+ "openbci_path = \"join/mergedData_output.txt\"\n",
+ "output_csv_path = \"OpenBCI_with_labels.csv\"\n",
+ "label_name = \"Movement\"\n",
+ "timestamp_col=\"Timestamp\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "f613abe9-8d5b-444c-af3c-b0ab826ed3f4",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:43.026443Z",
+ "start_time": "2025-02-13T20:09:41.323419Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "# Leer los logs y extraer tiempos y etiquetas\n",
+ "with open(logs_path, \"r\") as logs_file:\n",
+ " logs_data = [log.strip().split(\",\") for log in logs_file.readlines()]\n",
+ "with open(openbci_path, \"r\") as openbci_file:\n",
+ " lineas = [linea.strip().split(\",\") for linea in openbci_file.readlines() if not linea.strip().startswith('%')]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "d8eba4ab-63ee-40f5-b30d-f8ae58d5aa79",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:43.043659Z",
+ "start_time": "2025-02-13T20:09:43.039923Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "# Utility functions\n",
+ "def remove_columns(df, columns):\n",
+ " df.drop(columns, axis=\"columns\", inplace=True)\n",
+ "def set_type_columns(df, types):\n",
+ " for key, value in types.items():\n",
+ " df[key].astype(value)\n",
+ "def label_sample(data, start_time, end_time, label):\n",
+ " mask = (data[timestamp_col] >= start_time) & (data[timestamp_col] < end_time)\n",
+ " if data.loc[mask].empty:\n",
+ " print(f\"*Error, no hay registros en el intervalo [{start_time}, {end_time})\")\n",
+ " return False\n",
+ " else:\n",
+ " data.loc[mask, label_name] = label\n",
+ " return True"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "1ecf8906-828c-4e13-a267-2b96f61e2c2e",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.253744Z",
+ "start_time": "2025-02-13T20:09:43.057864Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "#Convertir los datos en un DataFrame\n",
+ "columns = \"Sample Index, EXG Channel 0, EXG Channel 1, EXG Channel 2, EXG Channel 3, EXG Channel 4, EXG Channel 5, EXG Channel 6, EXG Channel 7, EXG Channel 8, EXG Channel 9, EXG Channel 10, EXG Channel 11, EXG Channel 12, EXG Channel 13, EXG Channel 14, EXG Channel 15, Accel Channel 0, Accel Channel 1, Accel Channel 2, Not_Used1, Digital Channel 0 (D11), Digital Channel 1 (D12), Digital Channel 2 (D13), Digital Channel 3 (D17), Not_Used2, Digital Channel 4 (D18), Analog Channel 0, Analog Channel 1, Analog Channel 2, Timestamp, Marker Channel, Timestamp (Formatted)\".split(\",\")\n",
+ "columns = [column.strip() for column in columns]\n",
+ "types = {}\n",
+ "\n",
+ "data_df = pd.DataFrame(lineas, columns=columns)\n",
+ "exceptions = [\"Timestamp (Formatted)\"]\n",
+ "\n",
+ "for column in data_df.columns:\n",
+ " if column in exceptions:\n",
+ " continue\n",
+ " data_df[column] = pd.to_numeric(data_df[column], errors='coerce')\n",
+ "remove_columns(data_df, [\"Not_Used1\", \"Not_Used2\", \"Timestamp (Formatted)\", \"Sample Index\"])\n",
+ "data_df[timestamp_col] = pd.to_datetime(data_df[timestamp_col], unit=\"s\", utc=True)\n",
+ "# Create the label column\n",
+ "data_df[label_name]= \"\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "7f4bf8f8-99dd-4f0a-aa20-aa09643d9553",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:12:07.148168Z",
+ "start_time": "2025-02-13T20:12:07.142272Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Timestamp | \n",
+ " Label | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2025-01-27 17:31:40+00:00 | \n",
+ " i | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2025-01-27 17:32:13+00:00 | \n",
+ " none | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2025-01-27 17:33:08+00:00 | \n",
+ " none | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2025-01-27 17:50:46+00:00 | \n",
+ " c | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2025-01-27 17:51:11+00:00 | \n",
+ " i | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Timestamp Label\n",
+ "0 2025-01-27 17:31:40+00:00 i\n",
+ "1 2025-01-27 17:32:13+00:00 none\n",
+ "2 2025-01-27 17:33:08+00:00 none\n",
+ "3 2025-01-27 17:50:46+00:00 c\n",
+ "4 2025-01-27 17:51:11+00:00 i"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Convertir los logs en un DataFrame\n",
+ "log_df = pd.DataFrame(logs_data, columns=[\"Timestamp\", \"Label\"])\n",
+ "log_df[timestamp_col] = pd.to_datetime(log_df[timestamp_col], errors=\"coerce\", utc=True)\n",
+ "log_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "0c8715db-9090-4fd6-9ade-9796c268b0b5",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.288560Z",
+ "start_time": "2025-02-13T20:09:46.285065Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "def test(data, start_time, end_time):\n",
+ " mask = (data[timestamp_col] >= start_time) & (data[\"Timestamp\"] < end_time)\n",
+ " xdata = data[(data[timestamp_col]>=start_time) & (data[\"Timestamp\"] < end_time)]\n",
+ " print(\"xdata=\")\n",
+ " print(xdata.empty)\n",
+ " print(data.loc[mask,timestamp_col])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "90095eb1-91fb-4159-ae70-0ff42cfb2b4b",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.444389Z",
+ "start_time": "2025-02-13T20:09:46.316312Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "*Error, no hay registros en el intervalo [2025-01-27 17:31:40+00:00, 2025-01-27 17:32:13+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:50:46+00:00, 2025-01-27 17:51:11+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:51:11+00:00, 2025-01-27 17:51:53+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:51:53+00:00, 2025-01-27 17:52:28+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:52:28+00:00, 2025-01-27 17:52:43+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:52:43+00:00, 2025-01-27 17:52:56+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:52:56+00:00, 2025-01-27 17:53:58+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:53:58+00:00, 2025-01-27 17:54:14+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 17:54:14+00:00, 2025-01-27 18:32:55.900000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 18:32:55.900000+00:00, 2025-01-27 18:34:18.100000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 18:34:18.100000+00:00, 2025-01-27 18:34:24.800000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 19:34:39.400000+00:00, 2025-01-27 19:35:25.100000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 19:35:25.100000+00:00, 2025-01-27 19:35:44.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 19:35:44.600000+00:00, 2025-01-27 19:36:11+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 19:36:11+00:00, 2025-01-27 19:36:31.100000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-27 19:36:31.100000+00:00, 2025-01-27 19:36:50.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:00:12.700000+00:00, 2025-01-28 18:00:48.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:00:48.200000+00:00, 2025-01-28 18:01:11.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:01:11.500000+00:00, 2025-01-28 18:01:34.800000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:01:34.800000+00:00, 2025-01-28 18:01:50+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:01:50+00:00, 2025-01-28 18:02:23+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:02:23+00:00, 2025-01-28 18:02:26.900000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:44:45.900000+00:00, 2025-01-28 18:45:22.900000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:45:22.900000+00:00, 2025-01-28 18:45:48.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:45:48.600000+00:00, 2025-01-28 18:46:08.900000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:46:08.900000+00:00, 2025-01-28 18:46:34.300000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:46:34.300000+00:00, 2025-01-28 18:46:55.100000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:46:55.100000+00:00, 2025-01-28 18:47:22.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:47:22.500000+00:00, 2025-01-28 18:47:37.700000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 18:47:37.700000+00:00, 2025-01-28 19:11:31.400000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:11:31.400000+00:00, 2025-01-28 19:11:49.100000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:11:49.100000+00:00, 2025-01-28 19:11:55.300000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:11:55.300000+00:00, 2025-01-28 19:12:25+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:12:25+00:00, 2025-01-28 19:12:40.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:12:40.600000+00:00, 2025-01-28 19:13:03+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:13:03+00:00, 2025-01-28 19:13:21.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:13:21.200000+00:00, 2025-01-28 19:13:42+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:13:42+00:00, 2025-01-28 19:31:40.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:31:40.200000+00:00, 2025-01-28 19:32:11.400000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:32:11.400000+00:00, 2025-01-28 19:32:24.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:32:24.500000+00:00, 2025-01-28 19:32:50.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:32:50.500000+00:00, 2025-01-28 19:33:15.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:33:15.600000+00:00, 2025-01-28 19:34:10.700000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:34:10.700000+00:00, 2025-01-28 19:34:39.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:34:39.200000+00:00, 2025-01-28 19:34:58.900000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:34:58.900000+00:00, 2025-01-28 19:35:19.800000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:35:19.800000+00:00, 2025-01-28 19:35:44.700000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:35:44.700000+00:00, 2025-01-28 19:36:02.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:36:02.200000+00:00, 2025-01-28 19:36:30.400000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-01-28 19:36:30.400000+00:00, 2025-01-28 19:36:32+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:08:58.200000+00:00, 2025-02-03 19:11:33.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:11:33.500000+00:00, 2025-02-03 19:12:32.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:12:32.600000+00:00, 2025-02-03 19:13:18.400000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:13:18.400000+00:00, 2025-02-03 19:13:41.700000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:13:41.700000+00:00, 2025-02-03 19:14:21+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:14:21+00:00, 2025-02-03 19:27:37.400000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:27:37.400000+00:00, 2025-02-03 19:28:15.600000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:28:15.600000+00:00, 2025-02-03 19:28:47.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:28:47.200000+00:00, 2025-02-03 19:29:18+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:29:18+00:00, 2025-02-03 19:29:30.200000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:29:30.200000+00:00, 2025-02-03 19:29:52.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:29:52.500000+00:00, 2025-02-03 19:40:28.800000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:40:28.800000+00:00, 2025-02-03 19:40:49.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:40:49.500000+00:00, 2025-02-03 19:40:57.500000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:40:57.500000+00:00, 2025-02-03 19:41:36.800000+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 19:41:36.800000+00:00, 2025-02-03 20:01:52+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 20:01:52+00:00, 2025-02-03 20:02:39+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 20:02:39+00:00, 2025-02-03 20:03:08+00:00)\n",
+ "*Error, no hay registros en el intervalo [2025-02-03 20:03:08+00:00, 2025-02-03 20:03:30.300000+00:00)\n",
+ "There were 69 errors in 79 intervals\n"
+ ]
+ }
+ ],
+ "source": [
+ "errors = 0\n",
+ "for i in range(len(log_df) - 1):\n",
+ " start_time = log_df.loc[i, timestamp_col]\n",
+ " end_time = log_df.loc[i + 1, timestamp_col]\n",
+ " label = log_df.loc[i, \"Label\"]\n",
+ " success = label_sample(data_df, start_time, end_time, label)\n",
+ " if not success:\n",
+ " errors +=1\n",
+ " #test(data_df, start_time, end_time)\n",
+ " #break\n",
+ "print(f\"There were {errors} errors in {len(log_df)} intervals\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "da9ef7e2-5b7b-4505-9d6c-c2221bbd448d",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:13:11.062089Z",
+ "start_time": "2025-02-13T20:13:11.032296Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "# 2025-01-27 17:31:40+00:00, 2025-01-27 17:32:13+00:00"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "7a65b3c9-e0d3-406e-9b35-3be6b54d6d97",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.548106Z",
+ "start_time": "2025-02-13T20:01:16.083929Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "EXG Channel 0 float64\n",
+ "EXG Channel 1 float64\n",
+ "EXG Channel 2 float64\n",
+ "EXG Channel 3 float64\n",
+ "EXG Channel 4 float64\n",
+ "EXG Channel 5 float64\n",
+ "EXG Channel 6 float64\n",
+ "EXG Channel 7 float64\n",
+ "EXG Channel 8 float64\n",
+ "EXG Channel 9 float64\n",
+ "EXG Channel 10 float64\n",
+ "EXG Channel 11 float64\n",
+ "EXG Channel 12 float64\n",
+ "EXG Channel 13 float64\n",
+ "EXG Channel 14 float64\n",
+ "EXG Channel 15 float64\n",
+ "Accel Channel 0 float64\n",
+ "Accel Channel 1 float64\n",
+ "Accel Channel 2 float64\n",
+ "Digital Channel 0 (D11) float64\n",
+ "Digital Channel 1 (D12) float64\n",
+ "Digital Channel 2 (D13) float64\n",
+ "Digital Channel 3 (D17) float64\n",
+ "Digital Channel 4 (D18) float64\n",
+ "Analog Channel 0 float64\n",
+ "Analog Channel 1 float64\n",
+ "Analog Channel 2 float64\n",
+ "Timestamp datetime64[ns, UTC]\n",
+ "Marker Channel float64\n",
+ "Movement object\n",
+ "dtype: object"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "k=data_df[data_df[timestamp_col] > datetime("
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "a25f656e-7a84-4582-9017-a49ddb9ffe76",
+ "metadata": {
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [
+ {
+ "ename": "TypeError",
+ "evalue": "'minutes' is an invalid keyword argument for this function",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m inicio \u001b[38;5;241m=\u001b[39m datetime(year\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2025\u001b[39m,month\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m,day\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m27\u001b[39m,hour\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m17\u001b[39m,minutes\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m31\u001b[39m,seconds\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m40\u001b[39m)\n",
+ "\u001b[0;31mTypeError\u001b[0m: 'minutes' is an invalid keyword argument for this function"
+ ]
+ }
+ ],
+ "source": [
+ "inicio = datetime(year=2025,month=1,day=27,hour=17,minutes=31,seconds=40)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2a3ab74e-89aa-4b8d-881c-ad391680524f",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.536509200Z",
+ "start_time": "2025-02-13T20:01:15.888660Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "data_df[data_df[datetime_col] >= inicio & data_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "cbcd0c88-45a9-4018-a462-bc9f652f727a",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.536509200Z",
+ "start_time": "2025-02-13T20:01:15.888660Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "data_df[\"Movement\"].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0e2a79fb-5578-42a8-bcbb-f9ce6c8eae24",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "4752c811-aa32-4785-b74f-396c1c309085",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/.ipynb_checkpoints/creator-checkpoint.py b/.ipynb_checkpoints/creator-checkpoint.py
new file mode 100644
index 0000000..52c9f60
--- /dev/null
+++ b/.ipynb_checkpoints/creator-checkpoint.py
@@ -0,0 +1,96 @@
+import pandas as pd
+from datetime import datetime
+
+# Cargar archivo de logs
+logs_path = "join/mergedLog_output.txt"
+openbci_path = "join/mergedData_output.txt"
+output_csv_path = "OpenBCI_with_labels.csv"
+
+# Leer los logs y extraer tiempos y etiquetas
+with open(logs_path, "r") as logs_file:
+ logs_data = [log.strip().split(",") for log in logs_file.readlines()]
+
+
+
+with open(openbci_path, "r") as openbci_file:
+ lineas = [linea.strip().split(",") for linea in openbci_file.readlines() if not linea.strip().startswith('%')]
+
+#Convertir los logs en un DataFrame
+log_df = pd.DataFrame(logs_data, columns=["Timestamp", "Label"])
+columns = "Sample Index, EXG Channel 0, EXG Channel 1, EXG Channel 2, EXG Channel 3, EXG Channel 4, EXG Channel 5, EXG Channel 6, EXG Channel 7, EXG Channel 8, EXG Channel 9, EXG Channel 10, EXG Channel 11, EXG Channel 12, EXG Channel 13, EXG Channel 14, EXG Channel 15, Accel Channel 0, Accel Channel 1, Accel Channel 2, Not Used, Digital Channel 0 (D11), Digital Channel 1 (D12), Digital Channel 2 (D13), Digital Channel 3 (D17), Not Used, Digital Channel 4 (D18), Analog Channel 0, Analog Channel 1, Analog Channel 2, Timestamp, Marker Channel, Timestamp (Formatted)".split(",")
+data_df = pd.DataFrame(lineas, columns=columns)
+
+
+# Buscar la columna correcta de timestamp
+timestamp_col = next((col for col in data_df.columns if "Timestamp (Formatted)" in col), None)
+if timestamp_col is None:
+ raise ValueError("No se encontró la columna de Timestamp en OpenBCI.")
+
+# Convertir a formato datetime
+data_df[timestamp_col] = pd.to_datetime(data_df[timestamp_col])
+log_df["Timestamp"] = pd.to_datetime(log_df["Timestamp"], errors="coerce")
+
+# Crear una nueva columna vacía para la etiqueta
+data_df["Movement Label"] = ""
+
+# Asignar etiquetas de acuerdo a los rangos en log_df
+for i in range(len(log_df) - 1):
+ start_time = log_df.loc[i, "Timestamp"]
+ end_time = log_df.loc[i + 1, "Timestamp"]
+ label = log_df.loc[i, "Label"]
+
+ # Asignar etiqueta a los timestamps en el rango [start_time, end_time)
+ mask = (data_df[timestamp_col] >= start_time) & (data_df[timestamp_col] < end_time)
+
+ # Si el label es "none", "i" o "d", asignar valores numéricos; si es "c", ignorarlo
+ data_df.loc[mask, "Movement Label"] = label
+
+
+data_df["Movement Label"] = data_df["Movement Label"].str.strip().str.lower()
+
+# Reemplazar etiquetas con valores numéricos
+label_mapping = {"none": 0, "i": 1, "d": 2}
+data_df["Movement Label"] = data_df["Movement Label"].map(label_mapping)
+
+# Verificar si hay valores NaN en la columna "Movement Label"
+print(f"Valores sin etiquetar: {data_df['Movement Label'].isna().sum()} filas con NaN")
+
+print("🔍 Timestamps en log_df (primeros 5 valores):")
+print(log_df["Timestamp"].head())
+
+print("\n🔍 Timestamps en data_df (primeros 5 valores):")
+print(data_df[timestamp_col].head())
+
+print("\n🔍 Últimos valores en log_df:")
+print(log_df["Timestamp"].tail())
+
+print("\n🔍 Últimos valores en data_df:")
+print(data_df[timestamp_col].tail())
+
+log_df["Timestamp"] = log_df["Timestamp"].dt.floor("S") # Redondea a segundos
+data_df[timestamp_col] = data_df[timestamp_col].dt.floor("S") # Redondea a segundos
+
+if log_df["Timestamp"].isna().sum() > 0:
+ print(f"⚠️ Hay {log_df['Timestamp'].isna().sum()} valores NaT en log_df. Eliminando...")
+ log_df = log_df.dropna(subset=["Timestamp"])
+
+data_df["Movement Label"] = ""
+
+for i in range(len(log_df) - 1):
+ start_time = log_df.loc[i, "Timestamp"]
+ end_time = log_df.loc[i + 1, "Timestamp"]
+ label = log_df.loc[i, "Label"]
+
+ print(f"Asignando etiqueta '{label}' a registros entre {start_time} y {end_time}")
+
+ mask = (data_df[timestamp_col] >= start_time) & (data_df[timestamp_col] < end_time)
+
+ data_df.loc[mask, "Movement Label"] = label
+
+
+
+# Eliminar registros con etiqueta 'c'
+data_df = data_df[data_df["Movement Label"].notna()]
+
+# Guardar en un archivo CSV
+data_df.to_csv("openbci_with_labels_filtered.csv", index=False)
\ No newline at end of file
diff --git a/TestEtiquetado.ipynb b/TestEtiquetado.ipynb
index 49d91b1..1b6ff92 100644
--- a/TestEtiquetado.ipynb
+++ b/TestEtiquetado.ipynb
@@ -2,67 +2,86 @@
"cells": [
{
"cell_type": "code",
+ "execution_count": 1,
"id": "5fe31b7f-2243-4587-9740-46164846cff3",
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-13T20:09:41.300262Z",
"start_time": "2025-02-13T20:09:41.297886Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
}
},
+ "outputs": [],
"source": [
"import pandas as pd\n",
- "from datetime import datetime"
- ],
- "outputs": [],
- "execution_count": 111
+ "from datetime import datetime, timezone\n",
+ "import zoneinfo\n"
+ ]
},
{
"cell_type": "code",
+ "execution_count": 2,
"id": "cbb445af-6351-43b0-8142-f9aa35388e6e",
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-13T20:09:41.308855Z",
"start_time": "2025-02-13T20:09:41.306360Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
}
},
+ "outputs": [],
"source": [
"logs_path = \"join/mergedLog_output.txt\"\n",
"openbci_path = \"join/mergedData_output.txt\"\n",
"output_csv_path = \"OpenBCI_with_labels.csv\"\n",
"label_name = \"Movement\"\n",
"timestamp_col=\"Timestamp\""
- ],
- "outputs": [],
- "execution_count": 112
+ ]
},
{
"cell_type": "code",
+ "execution_count": 3,
"id": "f613abe9-8d5b-444c-af3c-b0ab826ed3f4",
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-13T20:09:43.026443Z",
"start_time": "2025-02-13T20:09:41.323419Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
}
},
+ "outputs": [],
"source": [
"# Leer los logs y extraer tiempos y etiquetas\n",
"with open(logs_path, \"r\") as logs_file:\n",
" logs_data = [log.strip().split(\",\") for log in logs_file.readlines()]\n",
"with open(openbci_path, \"r\") as openbci_file:\n",
" lineas = [linea.strip().split(\",\") for linea in openbci_file.readlines() if not linea.strip().startswith('%')]"
- ],
- "outputs": [],
- "execution_count": 113
+ ]
},
{
"cell_type": "code",
+ "execution_count": 4,
"id": "d8eba4ab-63ee-40f5-b30d-f8ae58d5aa79",
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-13T20:09:43.043659Z",
"start_time": "2025-02-13T20:09:43.039923Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
}
},
+ "outputs": [],
"source": [
"# Utility functions\n",
"def remove_columns(df, columns):\n",
@@ -71,636 +90,37 @@
" for key, value in types.items():\n",
" df[key].astype(value)\n",
"def label_sample(data, start_time, end_time, label):\n",
- " mask = (data[timestamp_col] >= start_time) & (data[timestamp_col] < end_time)\n",
+ " cet_tz = zoneinfo.ZoneInfo(\"Europe/Madrid\")\n",
+ " begin = datetime.strptime(start_time.strip(), '%Y-%m-%d %H:%M:%S.%f').astimezone(cet_tz)\n",
+ " end = datetime.strptime(end_time.strip(), '%Y-%m-%d %H:%M:%S.%f').astimezone(cet_tz)\n",
+ " # inicio = datetime(year=2025,month=1,day=27,hour=17,minute=50,second=46, tzinfo=cet_tz)\n",
+ " # final = datetime(year=2025,month=1,day=27,hour=17,minute=51,second=11, tzinfo=cet_tz)\n",
+ " mask = (data[timestamp_col] >= begin) & (data[timestamp_col] < end)\n",
" if data.loc[mask].empty:\n",
" print(f\"*Error, no hay registros en el intervalo [{start_time}, {end_time})\")\n",
" return False\n",
" else:\n",
- " data.loc[mask, label_name] = label\n",
+ " data.loc[mask, label_name] = label.strip()\n",
" return True"
- ],
- "outputs": [],
- "execution_count": 114
+ ]
},
{
"cell_type": "code",
+ "execution_count": 5,
"id": "1ecf8906-828c-4e13-a267-2b96f61e2c2e",
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-13T20:09:46.253744Z",
"start_time": "2025-02-13T20:09:43.057864Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
}
},
- "source": [
- "#Convertir los datos en un DataFrame\n",
- "columns = \"Sample Index, EXG Channel 0, EXG Channel 1, EXG Channel 2, EXG Channel 3, EXG Channel 4, EXG Channel 5, EXG Channel 6, EXG Channel 7, EXG Channel 8, EXG Channel 9, EXG Channel 10, EXG Channel 11, EXG Channel 12, EXG Channel 13, EXG Channel 14, EXG Channel 15, Accel Channel 0, Accel Channel 1, Accel Channel 2, Not_Used1, Digital Channel 0 (D11), Digital Channel 1 (D12), Digital Channel 2 (D13), Digital Channel 3 (D17), Not_Used2, Digital Channel 4 (D18), Analog Channel 0, Analog Channel 1, Analog Channel 2, Timestamp, Marker Channel, Timestamp (Formatted)\".split(\",\")\n",
- "columns = [column.strip() for column in columns]\n",
- "types = {}\n",
- "\n",
- "data_df = pd.DataFrame(lineas, columns=columns)\n",
- "exceptions = [\"Timestamp (Formatted)\"]\n",
- "\n",
- "for column in data_df.columns:\n",
- " if column in exceptions:\n",
- " continue\n",
- " data_df[column] = pd.to_numeric(data_df[column], errors='coerce')\n",
- "remove_columns(data_df, [\"Not_Used1\", \"Not_Used2\", \"Timestamp (Formatted)\", \"Sample Index\"])\n",
- "data_df[timestamp_col] = pd.to_datetime(data_df[timestamp_col], unit=\"s\", utc=True)\n",
- "# Create the label column\n",
- "data_df[label_name]= \"\""
- ],
- "outputs": [],
- "execution_count": 115
- },
- {
- "cell_type": "code",
- "id": "7f4bf8f8-99dd-4f0a-aa20-aa09643d9553",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-02-13T20:12:07.148168Z",
- "start_time": "2025-02-13T20:12:07.142272Z"
- }
- },
- "source": [
- "# Convertir los logs en un DataFrame\n",
- "log_df = pd.DataFrame(logs_data, columns=[\"Timestamp\", \"Label\"])\n",
- "log_df[timestamp_col] = pd.to_datetime(log_df[timestamp_col], errors=\"coerce\", utc=True)\n",
- "log_df.head()"
- ],
"outputs": [
{
"data": {
- "text/plain": [
- " Timestamp Label\n",
- "0 2025-01-27 17:31:40+00:00 i\n",
- "1 2025-01-27 17:32:13+00:00 none\n",
- "2 2025-01-27 17:33:08+00:00 none\n",
- "3 2025-01-27 17:50:46+00:00 c\n",
- "4 2025-01-27 17:51:11+00:00 i"
- ],
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " Timestamp | \n",
- " Label | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 2025-01-27 17:31:40+00:00 | \n",
- " i | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 2025-01-27 17:32:13+00:00 | \n",
- " none | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 2025-01-27 17:33:08+00:00 | \n",
- " none | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 2025-01-27 17:50:46+00:00 | \n",
- " c | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 2025-01-27 17:51:11+00:00 | \n",
- " i | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ]
- },
- "execution_count": 121,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "execution_count": 121
- },
- {
- "cell_type": "code",
- "id": "0c8715db-9090-4fd6-9ade-9796c268b0b5",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-02-13T20:09:46.288560Z",
- "start_time": "2025-02-13T20:09:46.285065Z"
- }
- },
- "source": [
- "def test(data, start_time, end_time):\n",
- " mask = (data[timestamp_col] >= start_time) & (data[\"Timestamp\"] < end_time)\n",
- " xdata = data[(data[timestamp_col]>=start_time) & (data[\"Timestamp\"] < end_time)]\n",
- " print(\"xdata=\")\n",
- " print(xdata.empty)\n",
- " print(data.loc[mask,timestamp_col])"
- ],
- "outputs": [],
- "execution_count": 117
- },
- {
- "cell_type": "code",
- "id": "90095eb1-91fb-4159-ae70-0ff42cfb2b4b",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-02-13T20:09:46.444389Z",
- "start_time": "2025-02-13T20:09:46.316312Z"
- }
- },
- "source": [
- "errors = 0\n",
- "for i in range(len(log_df) - 1):\n",
- " start_time = log_df.loc[i, timestamp_col]\n",
- " end_time = log_df.loc[i + 1, timestamp_col]\n",
- " label = log_df.loc[i, \"Label\"]\n",
- " success = label_sample(data_df, start_time, end_time, label)\n",
- " if not success:\n",
- " errors +=1\n",
- " #test(data_df, start_time, end_time)\n",
- " #break\n",
- "print(f\"There were {errors} errors in {len(log_df)} intervals\")"
- ],
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "*Error, no hay registros en el intervalo [2025-01-27 17:31:40+00:00, 2025-01-27 17:32:13+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:50:46+00:00, 2025-01-27 17:51:11+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:51:11+00:00, 2025-01-27 17:51:53+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:51:53+00:00, 2025-01-27 17:52:28+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:52:28+00:00, 2025-01-27 17:52:43+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:52:43+00:00, 2025-01-27 17:52:56+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:52:56+00:00, 2025-01-27 17:53:58+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:53:58+00:00, 2025-01-27 17:54:14+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 17:54:14+00:00, 2025-01-27 18:32:55.900000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 18:32:55.900000+00:00, 2025-01-27 18:34:18.100000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 18:34:18.100000+00:00, 2025-01-27 18:34:24.800000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 19:34:39.400000+00:00, 2025-01-27 19:35:25.100000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 19:35:25.100000+00:00, 2025-01-27 19:35:44.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 19:35:44.600000+00:00, 2025-01-27 19:36:11+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 19:36:11+00:00, 2025-01-27 19:36:31.100000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-27 19:36:31.100000+00:00, 2025-01-27 19:36:50.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:00:12.700000+00:00, 2025-01-28 18:00:48.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:00:48.200000+00:00, 2025-01-28 18:01:11.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:01:11.500000+00:00, 2025-01-28 18:01:34.800000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:01:34.800000+00:00, 2025-01-28 18:01:50+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:01:50+00:00, 2025-01-28 18:02:23+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:02:23+00:00, 2025-01-28 18:02:26.900000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:44:45.900000+00:00, 2025-01-28 18:45:22.900000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:45:22.900000+00:00, 2025-01-28 18:45:48.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:45:48.600000+00:00, 2025-01-28 18:46:08.900000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:46:08.900000+00:00, 2025-01-28 18:46:34.300000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:46:34.300000+00:00, 2025-01-28 18:46:55.100000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:46:55.100000+00:00, 2025-01-28 18:47:22.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:47:22.500000+00:00, 2025-01-28 18:47:37.700000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 18:47:37.700000+00:00, 2025-01-28 19:11:31.400000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:11:31.400000+00:00, 2025-01-28 19:11:49.100000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:11:49.100000+00:00, 2025-01-28 19:11:55.300000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:11:55.300000+00:00, 2025-01-28 19:12:25+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:12:25+00:00, 2025-01-28 19:12:40.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:12:40.600000+00:00, 2025-01-28 19:13:03+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:13:03+00:00, 2025-01-28 19:13:21.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:13:21.200000+00:00, 2025-01-28 19:13:42+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:13:42+00:00, 2025-01-28 19:31:40.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:31:40.200000+00:00, 2025-01-28 19:32:11.400000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:32:11.400000+00:00, 2025-01-28 19:32:24.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:32:24.500000+00:00, 2025-01-28 19:32:50.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:32:50.500000+00:00, 2025-01-28 19:33:15.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:33:15.600000+00:00, 2025-01-28 19:34:10.700000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:34:10.700000+00:00, 2025-01-28 19:34:39.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:34:39.200000+00:00, 2025-01-28 19:34:58.900000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:34:58.900000+00:00, 2025-01-28 19:35:19.800000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:35:19.800000+00:00, 2025-01-28 19:35:44.700000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:35:44.700000+00:00, 2025-01-28 19:36:02.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:36:02.200000+00:00, 2025-01-28 19:36:30.400000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-01-28 19:36:30.400000+00:00, 2025-01-28 19:36:32+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:08:58.200000+00:00, 2025-02-03 19:11:33.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:11:33.500000+00:00, 2025-02-03 19:12:32.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:12:32.600000+00:00, 2025-02-03 19:13:18.400000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:13:18.400000+00:00, 2025-02-03 19:13:41.700000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:13:41.700000+00:00, 2025-02-03 19:14:21+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:14:21+00:00, 2025-02-03 19:27:37.400000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:27:37.400000+00:00, 2025-02-03 19:28:15.600000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:28:15.600000+00:00, 2025-02-03 19:28:47.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:28:47.200000+00:00, 2025-02-03 19:29:18+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:29:18+00:00, 2025-02-03 19:29:30.200000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:29:30.200000+00:00, 2025-02-03 19:29:52.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:29:52.500000+00:00, 2025-02-03 19:40:28.800000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:40:28.800000+00:00, 2025-02-03 19:40:49.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:40:49.500000+00:00, 2025-02-03 19:40:57.500000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:40:57.500000+00:00, 2025-02-03 19:41:36.800000+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 19:41:36.800000+00:00, 2025-02-03 20:01:52+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 20:01:52+00:00, 2025-02-03 20:02:39+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 20:02:39+00:00, 2025-02-03 20:03:08+00:00)\n",
- "*Error, no hay registros en el intervalo [2025-02-03 20:03:08+00:00, 2025-02-03 20:03:30.300000+00:00)\n",
- "There were 69 errors in 79 intervals\n"
- ]
- }
- ],
- "execution_count": 118
- },
- {
- "cell_type": "code",
- "id": "da9ef7e2-5b7b-4505-9d6c-c2221bbd448d",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-02-13T20:13:11.062089Z",
- "start_time": "2025-02-13T20:13:11.032296Z"
- }
- },
- "source": "data_df.tail(50)",
- "outputs": [
- {
- "data": {
- "text/plain": [
- " EXG Channel 0 EXG Channel 1 EXG Channel 2 EXG Channel 3 \\\n",
- "261950 15958.184416 5705.103958 -50892.910468 -35801.504350 \n",
- "261951 15784.064327 5989.418148 -50483.404158 -35387.661801 \n",
- "261952 16048.776036 5700.343037 -50938.865654 -35879.489586 \n",
- "261953 15826.912621 5897.977161 -50590.066682 -35512.473942 \n",
- "261954 15967.795666 5905.666161 -50651.131648 -35605.211330 \n",
- "261955 15999.266922 5732.417790 -50856.208903 -35802.130199 \n",
- "261956 15830.332438 6032.445256 -50423.903814 -35360.549135 \n",
- "261957 16086.908112 5738.229244 -50885.892020 -35846.945446 \n",
- "261958 15896.538305 5965.434726 -50517.132940 -35445.932799 \n",
- "261959 16034.672086 5980.790374 -50577.057967 -35519.045355 \n",
- "261960 16065.338679 5790.152346 -50804.777539 -35737.488954 \n",
- "261961 15919.515898 6118.231251 -50341.515284 -35262.179108 \n",
- "261962 16180.785439 5826.853910 -50800.888336 -35741.065233 \n",
- "261963 15983.888922 6038.301413 -50444.690936 -35348.501545 \n",
- "261964 16103.001368 6059.423811 -50490.444957 -35412.606348 \n",
- "261965 16167.061468 5905.040312 -50684.972189 -35601.433885 \n",
- "261966 16032.682780 6253.660471 -50208.298887 -35111.349536 \n",
- "261967 16300.568438 5979.337511 -50655.847866 -35583.507786 \n",
- "261968 16087.153982 6157.950301 -50337.514322 -35237.927465 \n",
- "261969 16206.758166 6187.879287 -50362.525924 -35292.421018 \n",
- "261970 16242.856233 5982.489107 -50611.591412 -35536.569123 \n",
- "261971 16074.502894 6310.076274 -50144.596415 -35058.442957 \n",
- "261972 16324.551859 6016.843738 -50609.602107 -35536.122088 \n",
- "261973 16136.149005 6207.772339 -50281.411443 -35173.956773 \n",
- "261974 16246.991306 6241.657584 -50300.410426 -35213.944043 \n",
- "261975 16298.892057 6034.546320 -50550.347632 -35468.888041 \n",
- "261976 16152.666945 6390.766071 -50051.993138 -34961.436386 \n",
- "261977 16394.557523 6091.140937 -50528.733495 -35457.131023 \n",
- "261978 16189.726137 6261.975320 -50227.163759 -35128.046289 \n",
- "261979 16276.629719 6290.317332 -50247.503847 -35176.817796 \n",
- "261980 16325.580040 6067.090460 -50524.620774 -35455.231125 \n",
- "261981 16127.253011 6371.118888 -50079.552839 -34992.550015 \n",
- "261982 16390.780078 6103.836728 -50522.095027 -35454.694683 \n",
- "261983 16202.041948 6280.862544 -50211.003448 -35106.610967 \n",
- "261984 16282.150600 6311.305620 -50224.481550 -35132.963673 \n",
- "261985 16347.775322 6093.666684 -50502.291382 -35398.837674 \n",
- "261986 16158.545453 6407.261659 -50049.579149 -34922.656110 \n",
- "261987 16412.103642 6126.590803 -50504.772425 -35393.741476 \n",
- "261988 16201.751375 6263.629349 -50243.189960 -35093.445789 \n",
- "261989 16265.811475 6293.066596 -50244.218140 -35106.476856 \n",
- "261990 16349.049371 6082.714329 -50504.638315 -35357.911629 \n",
- "261991 16165.116866 6418.258717 -50022.645297 -34844.760280 \n",
- "261992 16415.612866 6141.298251 -50457.274968 -35287.503634 \n",
- "261993 16206.400538 6259.337814 -50197.882974 -34985.442160 \n",
- "261994 16250.656992 6283.522401 -50175.799450 -34967.963096 \n",
- "261995 16309.464432 6040.313070 -50433.872692 -35211.954738 \n",
- "261996 16082.258950 6333.411495 -49951.946730 -34703.631366 \n",
- "261997 16282.821153 6006.561936 -50402.088511 -35173.353275 \n",
- "261998 16111.740900 6168.142696 -50104.273868 -34830.209295 \n",
- "261999 16194.420003 6251.581758 -50045.153504 -34782.354210 \n",
- "\n",
- " EXG Channel 4 EXG Channel 5 EXG Channel 6 EXG Channel 7 \\\n",
- "261950 -23200.708413 -13047.227329 -48800.116634 -13164.283414 \n",
- "261951 -23677.113495 -14594.817411 -48380.797908 -12791.210448 \n",
- "261952 -22427.315703 -13165.579816 -48843.836647 -13054.089314 \n",
- "261953 -23915.204276 -14180.751345 -48489.494442 -12984.575389 \n",
- "261954 -22723.230448 -14250.667602 -48566.697367 -12805.582619 \n",
- "261955 -23119.683340 -13366.521998 -48773.093375 -13148.301917 \n",
- "261956 -23625.749186 -14961.363669 -48327.667812 -12757.995755 \n",
- "261957 -22379.125342 -13530.382637 -48803.178823 -13024.897936 \n",
- "261958 -23842.091720 -14500.582457 -48422.774484 -12930.730037 \n",
- "261959 -22656.018753 -14686.280750 -48485.873459 -12726.189223 \n",
- "261960 -23025.895420 -13882.556722 -48713.637735 -13088.958036 \n",
- "261961 -23560.035057 -15604.244543 -48244.094639 -12668.029984 \n",
- "261962 -22281.738792 -14279.791925 -48717.973974 -12936.832063 \n",
- "261963 -23741.084187 -15275.942120 -48355.026347 -12869.598015 \n",
- "261964 -22593.635034 -15559.630461 -48408.223499 -12685.218475 \n",
- "261965 -22912.415613 -14781.096850 -48601.521385 -13008.536459 \n",
- "261966 -23456.345315 -16570.599862 -48112.174644 -12579.584131 \n",
- "261967 -22133.457319 -15331.419150 -48572.441765 -12819.306590 \n",
- "261968 -23607.085479 -16391.830610 -48245.279282 -12782.873247 \n",
- "261969 -22493.588626 -16793.424403 -48276.281151 -12563.155599 \n",
- "261970 -22792.632615 -15966.946300 -48526.061896 -12921.051731 \n",
- "261971 -23414.234628 -17732.443539 -48050.036794 -12514.205279 \n",
- "261972 -22105.629397 -16478.264806 -48529.772285 -12754.553587 \n",
- "261973 -23557.866938 -17449.693972 -48190.249287 -12701.423490 \n",
- "261974 -22460.575099 -17804.349101 -48211.885776 -12473.212179 \n",
- "261975 -22727.387873 -16842.262965 -48465.354558 -12845.882815 \n",
- "261976 -23364.054962 -18473.515627 -47957.478220 -12415.187051 \n",
- "261977 -22012.400271 -17060.818322 -48443.695717 -12657.524664 \n",
- "261978 -23457.462902 -17830.366532 -48127.999679 -12633.205966 \n",
- "261979 -22398.191380 -18120.447471 -48151.044327 -12419.880917 \n",
- "261980 -22615.271522 -17045.373266 -48431.178740 -12797.848916 \n",
- "261981 -23328.515688 -18592.292797 -47974.018511 -12431.906156 \n",
- "261982 -21980.705497 -17145.285564 -48429.167083 -12661.235054 \n",
- "261983 -23402.567017 -17838.033180 -48105.960859 -12632.870690 \n",
- "261984 -22394.123363 -18108.601047 -48124.713972 -12414.203574 \n",
- "261985 -22591.198694 -16979.905007 -48411.755074 -12778.894636 \n",
- "261986 -23351.895613 -18582.279215 -47953.231389 -12417.824557 \n",
- "261987 -21981.219587 -17296.718633 -48420.025220 -12638.145702 \n",
- "261988 -23430.305532 -17991.075574 -48143.847065 -12638.458626 \n",
- "261989 -22463.167901 -18340.410988 -48148.876208 -12407.855679 \n",
- "261990 -22604.855610 -17188.178562 -48414.750208 -12759.269805 \n",
- "261991 -23368.301793 -18793.436145 -47920.396676 -12356.804294 \n",
- "261992 -21970.781323 -17472.649213 -48366.023405 -12550.035125 \n",
- "261993 -23390.944110 -18152.499873 -48097.288382 -12570.799896 \n",
- "261994 -22453.176672 -18548.528081 -48077.820012 -12334.161977 \n",
- "261995 -22535.945181 -17366.053744 -48333.725135 -12673.170885 \n",
- "261996 -23359.070523 -18967.399772 -47840.936225 -12293.414747 \n",
- "261997 -21948.407227 -17668.875178 -48305.114902 -12498.581409 \n",
- "261998 -23366.044267 -18319.914439 -47997.063160 -12474.709746 \n",
- "261999 -22405.098069 -18793.078517 -47938.859217 -12184.338234 \n",
- "\n",
- " EXG Channel 8 EXG Channel 9 ... Digital Channel 1 (D12) \\\n",
- "261950 -6587.394367 -31007.412792 ... 0.0 \n",
- "261951 -6640.591519 -30508.074821 ... 0.0 \n",
- "261952 -6331.288079 -30726.898399 ... 0.0 \n",
- "261953 -6730.110255 -30842.412215 ... 0.0 \n",
- "261954 -6340.005260 -30405.390907 ... 112.0 \n",
- "261955 -6523.736599 -30957.903678 ... 0.0 \n",
- "261956 -6582.231114 -30463.706608 ... 0.0 \n",
- "261957 -6275.922808 -30693.460190 ... 0.0 \n",
- "261958 -6658.651728 -30783.627127 ... 0.0 \n",
- "261959 -6248.206645 -30313.636996 ... 0.0 \n",
- "261960 -6438.129418 -30897.531616 ... 16.0 \n",
- "261961 -6499.239087 -30394.796180 ... 0.0 \n",
- "261962 -6178.044519 -30590.195130 ... 0.0 \n",
- "261963 -6570.071765 -30700.366879 ... 0.0 \n",
- "261964 -6184.280656 -30222.061899 ... 0.0 \n",
- "261965 -6356.679661 -30788.522159 ... 104.0 \n",
- "261966 -6375.589237 -30249.912173 ... 0.0 \n",
- "261967 -6037.228529 -30420.858314 ... 0.0 \n",
- "261968 -6449.394697 -30570.972630 ... 0.0 \n",
- "261969 -6056.383974 -30093.852293 ... 0.0 \n",
- "261970 -6224.290278 -30677.858672 ... 88.0 \n",
- "261971 -6309.137500 -30201.140666 ... 0.0 \n",
- "261972 -5983.070252 -30374.210223 ... 0.0 \n",
- "261973 -6379.545495 -30534.673397 ... 0.0 \n",
- "261974 -5982.913790 -30031.021539 ... 0.0 \n",
- "261975 -6151.200074 -30632.551686 ... 56.0 \n",
- "261976 -6217.964735 -30128.832773 ... 0.0 \n",
- "261977 -5874.373719 -30280.802283 ... 0.0 \n",
- "261978 -6304.868317 -30474.010762 ... 0.0 \n",
- "261979 -5942.680650 -29983.702896 ... 0.0 \n",
- "261980 -6097.041797 -30567.776330 ... 80.0 \n",
- "261981 -6223.530319 -30134.308950 ... 0.0 \n",
- "261982 -5888.812946 -30282.746885 ... 0.0 \n",
- "261983 -6271.050128 -30437.867992 ... 0.0 \n",
- "261984 -5932.309441 -29957.774873 ... 0.0 \n",
- "261985 -6068.029233 -30537.735586 ... 64.0 \n",
- "261986 -6202.631438 -30113.722994 ... 0.0 \n",
- "261987 -5834.073524 -30228.543905 ... 0.0 \n",
- "261988 -6260.164828 -30465.092416 ... 0.0 \n",
- "261989 -5934.365801 -29983.434675 ... 0.0 \n",
- "261990 -6062.597759 -30569.408008 ... 72.0 \n",
- "261991 -6159.514923 -30109.543217 ... 0.0 \n",
- "261992 -5788.252448 -30206.885064 ... 0.0 \n",
- "261993 -6199.010455 -30437.018625 ... 0.0 \n",
- "261994 -5865.991815 -29946.330779 ... 0.0 \n",
- "261995 -5986.400662 -30501.905740 ... 80.0 \n",
- "261996 -6131.195263 -30077.066133 ... 0.0 \n",
- "261997 -5761.497410 -30166.249593 ... 0.0 \n",
- "261998 -6190.114461 -30421.707680 ... 0.0 \n",
- "261999 -5800.635314 -29857.996685 ... 0.0 \n",
- "\n",
- " Digital Channel 2 (D13) Digital Channel 3 (D17) \\\n",
- "261950 0.0 0.0 \n",
- "261951 0.0 0.0 \n",
- "261952 0.0 0.0 \n",
- "261953 0.0 0.0 \n",
- "261954 15.5 120.0 \n",
- "261955 0.0 0.0 \n",
- "261956 0.0 0.0 \n",
- "261957 0.0 0.0 \n",
- "261958 0.0 0.0 \n",
- "261959 0.0 0.0 \n",
- "261960 15.5 112.0 \n",
- "261961 0.0 0.0 \n",
- "261962 0.0 0.0 \n",
- "261963 0.0 0.0 \n",
- "261964 0.0 0.0 \n",
- "261965 15.5 88.0 \n",
- "261966 0.0 0.0 \n",
- "261967 0.0 0.0 \n",
- "261968 0.0 0.0 \n",
- "261969 0.0 0.0 \n",
- "261970 15.5 88.0 \n",
- "261971 0.0 0.0 \n",
- "261972 0.0 0.0 \n",
- "261973 0.0 0.0 \n",
- "261974 0.0 0.0 \n",
- "261975 15.5 112.0 \n",
- "261976 0.0 0.0 \n",
- "261977 0.0 0.0 \n",
- "261978 0.0 0.0 \n",
- "261979 0.0 0.0 \n",
- "261980 15.5 112.0 \n",
- "261981 0.0 0.0 \n",
- "261982 0.0 0.0 \n",
- "261983 0.0 0.0 \n",
- "261984 0.0 0.0 \n",
- "261985 15.5 112.0 \n",
- "261986 0.0 0.0 \n",
- "261987 0.0 0.0 \n",
- "261988 0.0 0.0 \n",
- "261989 0.0 0.0 \n",
- "261990 15.5 112.0 \n",
- "261991 0.0 0.0 \n",
- "261992 0.0 0.0 \n",
- "261993 0.0 0.0 \n",
- "261994 0.0 0.0 \n",
- "261995 16.0 8.0 \n",
- "261996 0.0 0.0 \n",
- "261997 0.0 0.0 \n",
- "261998 0.0 0.0 \n",
- "261999 0.0 0.0 \n",
- "\n",
- " Digital Channel 4 (D18) Analog Channel 0 Analog Channel 1 \\\n",
- "261950 0.0 0.0 0.0 \n",
- "261951 0.0 0.0 0.0 \n",
- "261952 0.0 0.0 0.0 \n",
- "261953 0.0 0.0 0.0 \n",
- "261954 16.0 0.0 0.0 \n",
- "261955 0.0 0.0 0.0 \n",
- "261956 0.0 0.0 0.0 \n",
- "261957 0.0 0.0 0.0 \n",
- "261958 0.0 0.0 0.0 \n",
- "261959 0.0 0.0 0.0 \n",
- "261960 32.0 0.0 0.0 \n",
- "261961 0.0 0.0 0.0 \n",
- "261962 0.0 0.0 0.0 \n",
- "261963 0.0 0.0 0.0 \n",
- "261964 0.0 0.0 0.0 \n",
- "261965 40.0 0.0 0.0 \n",
- "261966 0.0 0.0 0.0 \n",
- "261967 0.0 0.0 0.0 \n",
- "261968 0.0 0.0 0.0 \n",
- "261969 0.0 0.0 0.0 \n",
- "261970 40.0 0.0 0.0 \n",
- "261971 0.0 0.0 0.0 \n",
- "261972 0.0 0.0 0.0 \n",
- "261973 0.0 0.0 0.0 \n",
- "261974 0.0 0.0 0.0 \n",
- "261975 32.0 0.0 0.0 \n",
- "261976 0.0 0.0 0.0 \n",
- "261977 0.0 0.0 0.0 \n",
- "261978 0.0 0.0 0.0 \n",
- "261979 0.0 0.0 0.0 \n",
- "261980 32.0 0.0 0.0 \n",
- "261981 0.0 0.0 0.0 \n",
- "261982 0.0 0.0 0.0 \n",
- "261983 0.0 0.0 0.0 \n",
- "261984 0.0 0.0 0.0 \n",
- "261985 32.0 0.0 0.0 \n",
- "261986 0.0 0.0 0.0 \n",
- "261987 0.0 0.0 0.0 \n",
- "261988 0.0 0.0 0.0 \n",
- "261989 0.0 0.0 0.0 \n",
- "261990 40.0 0.0 0.0 \n",
- "261991 0.0 0.0 0.0 \n",
- "261992 0.0 0.0 0.0 \n",
- "261993 0.0 0.0 0.0 \n",
- "261994 0.0 0.0 0.0 \n",
- "261995 56.0 0.0 0.0 \n",
- "261996 0.0 0.0 0.0 \n",
- "261997 0.0 0.0 0.0 \n",
- "261998 0.0 0.0 0.0 \n",
- "261999 0.0 0.0 0.0 \n",
- "\n",
- " Analog Channel 2 Timestamp Marker Channel \\\n",
- "261950 0.0 2025-02-03 19:03:31.464028597+00:00 0.0 \n",
- "261951 0.0 2025-02-03 19:03:31.464050055+00:00 0.0 \n",
- "261952 0.0 2025-02-03 19:03:31.464065313+00:00 0.0 \n",
- "261953 0.0 2025-02-03 19:03:31.464080811+00:00 0.0 \n",
- "261954 0.0 2025-02-03 19:03:31.464096308+00:00 0.0 \n",
- "261955 0.0 2025-02-03 19:03:31.464126110+00:00 0.0 \n",
- "261956 0.0 2025-02-03 19:03:31.464140892+00:00 0.0 \n",
- "261957 0.0 2025-02-03 19:03:31.464155912+00:00 0.0 \n",
- "261958 0.0 2025-02-03 19:03:31.464170933+00:00 0.0 \n",
- "261959 0.0 2025-02-03 19:03:31.464185953+00:00 0.0 \n",
- "261960 0.0 2025-02-03 19:03:31.464201212+00:00 0.0 \n",
- "261961 0.0 2025-02-03 19:03:31.464216709+00:00 0.0 \n",
- "261962 0.0 2025-02-03 19:03:31.464236975+00:00 0.0 \n",
- "261963 0.0 2025-02-03 19:03:31.464251995+00:00 0.0 \n",
- "261964 0.0 2025-02-03 19:03:31.464266777+00:00 0.0 \n",
- "261965 0.0 2025-02-03 19:03:31.464282036+00:00 0.0 \n",
- "261966 0.0 2025-02-03 19:03:31.464297295+00:00 0.0 \n",
- "261967 0.0 2025-02-03 19:03:31.464312315+00:00 0.0 \n",
- "261968 0.0 2025-02-03 19:03:31.464327097+00:00 0.0 \n",
- "261969 0.0 2025-02-03 19:03:31.464342356+00:00 0.0 \n",
- "261970 0.0 2025-02-03 19:03:31.943303585+00:00 0.0 \n",
- "261971 0.0 2025-02-03 19:03:31.943417311+00:00 0.0 \n",
- "261972 0.0 2025-02-03 19:03:31.943461657+00:00 0.0 \n",
- "261973 0.0 2025-02-03 19:03:31.943548441+00:00 0.0 \n",
- "261974 0.0 2025-02-03 19:03:31.943575382+00:00 0.0 \n",
- "261975 0.0 2025-02-03 19:03:31.943597555+00:00 0.0 \n",
- "261976 0.0 2025-02-03 19:03:31.943624973+00:00 0.0 \n",
- "261977 0.0 2025-02-03 19:03:31.943647385+00:00 0.0 \n",
- "261978 0.0 2025-02-03 19:03:31.943668604+00:00 0.0 \n",
- "261979 0.0 2025-02-03 19:03:31.943688631+00:00 0.0 \n",
- "261980 0.0 2025-02-03 19:03:31.943710089+00:00 0.0 \n",
- "261981 0.0 2025-02-03 19:03:31.943731308+00:00 0.0 \n",
- "261982 0.0 2025-02-03 19:03:31.943753481+00:00 0.0 \n",
- "261983 0.0 2025-02-03 19:03:31.943769693+00:00 0.0 \n",
- "261984 0.0 2025-02-03 19:03:31.943798304+00:00 0.0 \n",
- "261985 0.0 2025-02-03 19:03:31.943818092+00:00 0.0 \n",
- "261986 0.0 2025-02-03 19:03:31.943841934+00:00 0.0 \n",
- "261987 0.0 2025-02-03 19:03:31.943862915+00:00 0.0 \n",
- "261988 0.0 2025-02-03 19:03:31.943882227+00:00 0.0 \n",
- "261989 0.0 2025-02-03 19:03:31.943901539+00:00 0.0 \n",
- "261990 0.0 2025-02-03 19:03:31.944047213+00:00 0.0 \n",
- "261991 0.0 2025-02-03 19:03:31.944064379+00:00 0.0 \n",
- "261992 0.0 2025-02-03 19:03:31.944085121+00:00 0.0 \n",
- "261993 0.0 2025-02-03 19:03:31.944104910+00:00 0.0 \n",
- "261994 0.0 2025-02-03 19:03:31.944122791+00:00 0.0 \n",
- "261995 0.0 2025-02-03 19:03:31.944149256+00:00 0.0 \n",
- "261996 0.0 2025-02-03 19:03:31.944167376+00:00 0.0 \n",
- "261997 0.0 2025-02-03 19:03:31.944184065+00:00 0.0 \n",
- "261998 0.0 2025-02-03 19:03:31.944202900+00:00 0.0 \n",
- "261999 0.0 2025-02-03 19:03:31.944220066+00:00 0.0 \n",
- "\n",
- " Movement \n",
- "261950 c \n",
- "261951 c \n",
- "261952 c \n",
- "261953 c \n",
- "261954 c \n",
- "261955 c \n",
- "261956 c \n",
- "261957 c \n",
- "261958 c \n",
- "261959 c \n",
- "261960 c \n",
- "261961 c \n",
- "261962 c \n",
- "261963 c \n",
- "261964 c \n",
- "261965 c \n",
- "261966 c \n",
- "261967 c \n",
- "261968 c \n",
- "261969 c \n",
- "261970 c \n",
- "261971 c \n",
- "261972 c \n",
- "261973 c \n",
- "261974 c \n",
- "261975 c \n",
- "261976 c \n",
- "261977 c \n",
- "261978 c \n",
- "261979 c \n",
- "261980 c \n",
- "261981 c \n",
- "261982 c \n",
- "261983 c \n",
- "261984 c \n",
- "261985 c \n",
- "261986 c \n",
- "261987 c \n",
- "261988 c \n",
- "261989 c \n",
- "261990 c \n",
- "261991 c \n",
- "261992 c \n",
- "261993 c \n",
- "261994 c \n",
- "261995 c \n",
- "261996 c \n",
- "261997 c \n",
- "261998 c \n",
- "261999 c \n",
- "\n",
- "[50 rows x 30 columns]"
- ],
"text/html": [
"\n",
"\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Timestamp | \n",
+ " Label | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2025-01-27 17:31:40.0 | \n",
+ " i | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2025-01-27 17:32:13.0 | \n",
+ " none | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2025-01-27 17:33:08.0 | \n",
+ " none | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2025-01-27 17:50:46.0 | \n",
+ " c | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2025-01-27 17:51:11.0 | \n",
+ " i | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Timestamp Label\n",
+ "0 2025-01-27 17:31:40.0 i\n",
+ "1 2025-01-27 17:32:13.0 none\n",
+ "2 2025-01-27 17:33:08.0 none\n",
+ "3 2025-01-27 17:50:46.0 c\n",
+ "4 2025-01-27 17:51:11.0 i"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
],
+ "source": [
+ "# Convertir los logs en un DataFrame\n",
+ "log_df = pd.DataFrame(logs_data, columns=[\"Timestamp\", \"Label\"])\n",
+ "#log_df[timestamp_col] = pd.to_datetime(log_df[timestamp_col], errors=\"coerce\", utc=True)\n",
+ "log_df[timestamp_col] = log_df[timestamp_col].astype(str)\n",
+ "\n",
+ "log_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "b46901ba",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Timestamp object\n",
+ "Label object\n",
+ "dtype: object"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "log_df.dtypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "0c8715db-9090-4fd6-9ade-9796c268b0b5",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.288560Z",
+ "start_time": "2025-02-13T20:09:46.285065Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "def test(data, start_time, end_time):\n",
+ " mask = (data[timestamp_col] >= start_time) & (data[\"Timestamp\"] < end_time)\n",
+ " xdata = data[(data[timestamp_col]>=start_time) & (data[\"Timestamp\"] < end_time)]\n",
+ " print(\"xdata=\")\n",
+ " print(xdata.empty)\n",
+ " print(data.loc[mask,timestamp_col])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "90095eb1-91fb-4159-ae70-0ff42cfb2b4b",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-02-13T20:09:46.444389Z",
+ "start_time": "2025-02-13T20:09:46.316312Z"
+ },
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "*Error, no hay registros en el intervalo [2025-01-27 18:35:34.6, 2025-01-27 18:35:35.5)\n",
+ "There were 1 errors in 79 intervals\n"
+ ]
+ }
+ ],
+ "source": [
+ "errors = 0\n",
+ "for i in range(len(log_df) - 1):\n",
+ " start_time = log_df.loc[i, timestamp_col]\n",
+ " end_time = log_df.loc[i + 1, timestamp_col]\n",
+ " label = log_df.loc[i, \"Label\"]\n",
+ " success = label_sample(data_df, start_time, end_time, label)\n",
+ " if not success:\n",
+ " errors +=1\n",
+ " #test(data_df, start_time, end_time)\n",
+ " #break\n",
+ "print(f\"There were {errors} errors in {len(log_df)} intervals\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "d4e2a7aa",
+ "metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Movement\n",
- " c 164067\n",
- " i 37902\n",
- " 33956\n",
- " none 20484\n",
- " d 5591\n",
+ "c 97711\n",
+ "none 73413\n",
+ "i 49504\n",
+ "d 41161\n",
+ " 211\n",
"Name: count, dtype: int64"
]
},
- "execution_count": 93,
+ "execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
- "execution_count": 93
- },
- {
- "cell_type": "code",
- "id": "7a65b3c9-e0d3-406e-9b35-3be6b54d6d97",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2025-02-13T20:09:46.548106Z",
- "start_time": "2025-02-13T20:01:16.083929Z"
- }
- },
- "source": [],
- "outputs": [],
- "execution_count": null
+ "source": [
+ "data_df.value_counts(label_name)"
+ ]
}
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "base",
"language": "python",
"name": "python3"
},