Tarea 1: 15% ⇒ xxxx
Prueba 1: 30% ⇒ Viernes 2 de Octubre
Prueba 2: 40% ⇒ Viernes 27 de Noviembre
Tarea 2: 15% ⇒ xxxxx
Prueba Extraordinaria 30%: sólo para promedio entre 3,5 y 3,9
Semana 01: Lunes 03/ago al viernes 07/ago: Clase Introductoria + PPT0.1
Semana 02: Lunes 10/ago al viernes 14/ago: Lunes NO HAY CLASES + Viernes PPT0.2
Semana 03: Lunes 17/ago al viernes 21/ago
Semana 04: Lunes 24/ago al viernes 28/ago
Semana 05: Lunes 31/ago al viernes 04/sep
Semana 06: Lunes 07/sep al viernes 11/sep
Semana 07: Lunes 14/sep al viernes 18/sep : VACACIONES
Semana 08: Lunes 21/sep al viernes 25/sep
Semana 09: Lunes 28/sep al viernes 02/oct
Semana 10: Lunes 05/oct al viernes 09/oct
Semana 11: Lunes 12/oct al viernes 16/oct : Semana PAUSA
Semana 12: Lunes 19/oct al viernes 23/oct
Semana 13: Lunes 26/oct al viernes 30/oct
Semana 14: Lunes 02/nov al viernes 06/nov
Semana 15: Lunes 09/nov al viernes 13/nov
Semana 16: Lunes 16/nov al viernes 20/nov
Semana 17: Lunes 23/nov al viernes 27/nov
Semana 18: Lunes 30/nov al viernes 04/dic
Semana 19: Lunes 07/dic al viernes 11/dic : Prueba EXTRAORDINARIA
Plazo: Hasta el domingo 10 de mayo 23:59 en el siguiente link. Descuento de 5 décimas por cada hora de retraso.
Grupo: 2 o 3 personas.
Entregables: Formato INFORME 4 páginas + ANEXO con CÓDIGO FUENTE + VIDEO 4 minutos (publicado en Youtube, debe tener visibilidad "No Listado")
Contenido del Video: 1) Breve introducción. 2) Presentación del código funcionado, 3) Explicación de las principales funciones y resultados, y 4) una conclusión, indicando todos los ámbitos de conocimientos y competencias aplicadas para desarrollar el trabajo. Por ejemplo indicar si fue necesario aplicar conocimientos de “fisiología, programación.... etc.” (por favor reflexionar bien este punto, deben ser muy exhaustivos para este recuento). Modalidad: Pueden utilizar Zoom para grabar. De fondo deben tener el documento Colab y los recuadros de las cámaras de cada persona que presenta. Deben presentar todos los integrantes.
Contenido del Informe: Utilizar el siguiente formato base LINK. Debe contener al menos las siguientes secciones: 1) Introducción, 2) Metodología (fuentes de información utilizadas, lenguajes y librerías utilizadas, funciones implementadas) 3) Resultados, 4) Conclusiones, 5) Referencias.
PhysioNet (https://physionet.org/) es una plataforma que ofrece acceso gratuito a través de la web a un conjunto de colecciones de registros de señales fisiológicas (Ingresar a la sección DATA y buscar la base de datos “APNEA-ECG”). Esta plataforma cuenta con el respaldo de importantes organismos en EE.UU.: el Instituto Nacional de Ciencias Médicas Generales (NIGMS) y el Instituto Nacional de Imágenes Biomédicas y Bioingeniería (NIBIB) con financiamiento del NIH.
Para el desarrollo de este trabajo se utilizará la base de datos “Apnea-ECG Database” que está disponible en el siguiente link: https://physionet.org/content/apnea-ecg/1.0.0/
Esta base de datos fue utilizada por PhysioNet / Computers en el Cardiology Challenge del año 2000. Consiste en 70 registros de ECG, cada uno de 8 horas de duración, algunos de los cuales están acompañados de señales complementarias para el estudio del sueño (movimientos respiratorios, oximetría, etc.) Ver una descripción completa de la problemática en http://ecg.mit.edu/george/publications/apnea-ecg-cinc-2000.pdf
La implementación de los algoritmos solicitados se deberá verificar utilizando los archivos de pacientes:
Seleccionar 4 archivos de pacientes tipo "A" (con apnea) (a01,a02,a03,a04)
Seleccionar 1 archivos de pacientes tipo "B" (con apnea leve) (b01)
Seleccionar 3 archivos de pacientes tipo "C" (sin apnea) (c01,c02,c03)
Los archivos que deben utilizar son: “a0x.dat” (datos de ECG) y “a0xr.dat” (datos respiratorios).
Tal como se indica en la información adicional de la base de datos, se presentan resultados del análisis clínico. Por ejemplo se indica el sexo de cada paciente, la edad, la altura y el peso. Además se indica por cada paciente, el resultado del análisis clínico realizado por especialistas, indicando el total de minutos de cada estudio, y la clasificación de cada minuto como “apnea” o “no apnea”. Con ello se obtiene el “apnea index (AI)” que corresponde al número de apneas observadas por hora.
La plataforma cuenta con aplicación web de VISUALIZACIÓN a través de la cual es posible realizar una inspección general de los registros. A modo de ejemplo al seleccionar “Apnea-ECG Database” y el record “c03er” durante los primeros 25 segundos de registro, se observa los siguiente resultados (ojo... de demora un poco) (VER FIGURA adjunta1)
La descripción de las señales ECG, Resp C, Resp A, Resp N y Sp02 se detalla a continuación:
La señal de ECG está en los archivos individuales del tipo "a01.dat"
Las señes respiratorias (4) están juntas en los archivos tipo "a01r.dat", y corresponden a:
Resp C: señal de esfuerzo respiratorio torácico obtenida mediante pletismografía de inductancia;
Resp A: señal de esfuerzo respiratorio abdominal obtenida mediante pletismografía de inductancia;
Resp N: flujo de aire oronasal medido usando termistores nasales;
SpO2: saturación de oxígeno en la sangre.
Los registros “.dat” corresponden a archivos binarios con las siguientes características: 16 bits per sample,100 samples per second, nominally 200 A/D units per millivolt.
Desarrollar diversas funciones y métodos numéricos para analizar las señales de los 8 pacientes seleccionados y contrastar los resultados con los datos oficiales del Physionet.
Procesar cada uno de los registros de pacientes y obtener:
Total de minutos analizados
Total de minutos clasificados como APNEA
Total de minutos clasificados como No-APNEA
Frecuencia cardiaca promedio por minuto. Graficar
Frecuencia respiratoria promedio por minuto. Graficar
Estudio exploratorio:
Relacionar el IMC con el porcentaje de minutos con APNEA: Utilizar algún tipo de regresión lineal, polinomial, exponecial, etc. Comentar.
Relacionar la EDAD con el porcentaje de minutos con APNEA: Utilizar algún tipo de regresión lineal, polinomial, exponecial, etc. Comentar.
Ayuda incial: Al final hay un ejemplo Python con instrucciones para cargar los archivos
Plazo 1: Hasta el viernes 3 de julio 23:59. Bonus de 5 décimas.
Plazo 2: Hasta el miércoles 8 de julio 23:59. Descuento de 5 décimas por cada hora de retraso.
Grupo: 1 o 2 personas.
ESPECIFICACIONES TAREA LINK
MATERIA PRUEBA 1:
0.1 Métodos Numéricos - Computadores
0.2 Métodos Numéricos - Sistemas numéricos
1.0 Métodos Numéricos - Python - Variables, Sentencias de control, algoritmos básicos
1.1 Métodos Numéricos - Ejemplo - Paradoja de Zenón
1.2 Métodos Numéricos - Python - Algirmots, Funciones, Modelos
1.3 Métodos Numéricos - Tipos de Problemas
1.4 Métodos Numéricos - Errores, precisiones, truncamiento
1.5 Métodos Numéricos - Interpolación y Regresión Lineal
2.0 Métodos Numéricos - Ecuaciones No lineales
3.0 Manejo de matrices en Python
3.1 Métodos Numéricos - Sistemas de Ecuaciones Lineales - Métodos Directos
3.2 Métodos Numéricos - Sistemas de Ecuaciones Lineales - Métodos Directos B
3.3 Métodos Numéricos - Sistemas de Ecuaciones Lineales - Método Simple de GAUSS
3.4 Métodos Numéricos - Sistemas de Ecuaciones Lineales - Métodos Iterativos
4.1 Métodos Numéricos - Media Móvil, Ventanas y Máximos
4.2 Métodos Numéricos - Análisis Señales - Physionet
5.1 Métodos Numéricos Interpolación - Regresión Lineal [Tabla APNEA - Ejercicio]
5.2 Métodos Numéricos Regresión Polinomial
5.3 Métodos Numéricos - Ajuste Curvas Periodicas [link Fourier]
5.4 Métodos Numéricos - Ajuste Curvas Periodicas - Generalización
MATERIA PRUEBA 2:
6.0 Métodos Numéricos - Integración Numérica
6.1 Métodos Numéricos - Integración Numérica - Simpson
7.1 Métodos Numéricos - Diferenciación
7.2 Métodos Numéricos - Ec. Diferenciales - Euler
7.3 Métodos Numéricos - Ec. Diferenciales - Heun
8.1 Métodos Numéricos - Simplex Solver en Excel
8.2 Métodos Numéricos - Optimización y Heurísticas
9.1 Métodos Numéricos - Algoritmos Genéticos
9.2 Métodos Numéricos - Redes Neuronales
PRUEBA 2____________________________
Escribe un programa que calcule el promedio de temperatura de los últimos 7 días en tu ciudad, con las siguientes condiciones:
El usuario debe ingresar cada temperatura.
El programa debe mostrar el promedio y decir si la semana fue “fría” (<15°C), “templada” (15–25°C) o “calurosa” (>25°C).
Usa datos reales de temperaturas de Valparaíso.
Personalización creativa: Escribe un programa en Python que muestre tu nombre en un patrón artístico usando solo caracteres especiales (*, #, -).
Ejemplo:
*****************
* JUAN PEREZ *
*****************
* # # *
* ### ### *
* # # *
*****************
3: Manejo de listas. Crea un programa en Python que:
Pida al usuario que ingrese 6 nombres de personas que serán invitados a una reunión.
Guarde los nombres en una lista.
Muestre en pantalla:
La lista completa de invitados.
El primer y último invitado.
Los nombres ordenados alfabéticamente.
El total de invitados cuyo nombre comience con la letra "A".
Ejemplo de ejecución esperada:
Ingrese nombre 1: Ana
Ingrese nombre 2: Pedro
Ingrese nombre 3: Juan
Ingrese nombre 4: Andrea
Ingrese nombre 5: Luis
Ingrese nombre 6: Alicia
Lista completa: ['Ana', 'Pedro', 'Juan', 'Andrea', 'Luis', 'Alicia']
Primer invitado: Ana
Último invitado: Alicia
Lista ordenada: ['Alicia', 'Ana', 'Andrea', 'Juan', 'Luis', 'Pedro']
Invitados que comienzan con 'A': 3
Fuente de datos: DEIS https://deis.minsal.cl/
Serie de datos: Indicadores Hospitalarios según Servicio de Salud 2023
Paso 1: Seleccione las siguientes series de datos 2023 (ene a dic) para 3 hospitales (H. Van Buren, H. G. Fricke, H. E. Pereira) de los siguiente indicadores:
Número de Egresos
Egresos fallecidos
Promedio Días de Estada
Paso 2: Grafique las 3 series de datos utilizando librería Matplotlib de Python
Paso 3: Calcule una nueva serie de datos correspondiente a:
Tasa de fallecidos = Egresos fallecidos / Número de Egresos
Grafique esta serie calculada para los 3 hospitales
Paso 4: Calcule los promedios anuales de los 4 indicadores para los 3 hospitales y realice un tipo de gráfico de barras
Consideración General: Todos los gráficos deben tener:
Título, título eje x, título eje y
Leyenda, colores por serie y marcas por serie
Grilla
Conceptos y conocimientos involucrados: Programación en Python, algoritmos básicos, manejo de Excel. Aplicación de métodos de líneas de tendencias: Lineal, exponencial, polinomial grado 2 y grado 3. Métodos de Solución de ecuaciones no lineales.
Contexto: En muchas ocasiones en el ámbito de la salud se enfrenta la necesidad de proyectar en el tiempo la evolución de ciertas variables. Es importante utilizar adecuadamente las herramientas matemáticas que permiten enfrentar estos requerimientos de forma profesional, de lo contrario, es muy probable que se realicen estimaciones simplificadas que no representan una adecuada solución.
Problema: Suponga que en un hospital, se detecta un número creciente de consultas asociadas a una enfermedad de alto riesgo, 242 en 30 días. Se requiere proyectar esta tendencia, determinando si se trata de una crecimiento de tipo lineal, exponencial o polinomial.
PARTE 1: EXCEL
Para ello utilizando la herramienta EXCEL grafique y determine las siguientes curvas de tendencia (obtenga la ecuación con la opción en Excel: ver ejemplo en figura):
Tipo Lineal
Tipo Exponencial
Tipo Polinomial Grado 2
Tipo Polinomial Grado 3
PARTE 2: EXCEL: ECM
Determine el ECM (Error Cuadrático Medio) que se obtiene entre la curva de tendencia (modelo) y los datos reales para las 4 ecuaciones. Comente.
PARTE 3: PYTHON: Gráficos
Utilizando Matplotlib y la función subplot(2,2,...), grafique los datos y los 4 modelos de regresión
PARTE 4: PYTHON: ECM
Determine el ECM (Error Cuadrático Medio) que se obtiene entre la curva de tendencia (modelo) y los datos reales para las 4 ecuaciones.
PARTE 5: PYTHON: Extrapolación
Realice una extrapolación con los 4 modelos, para estimar cuántos pacientes se registrarán el día 35 y el día 40. Compare los 4 modelos.
PARTE 6: Comentario
Comente los 4 modelos y eliga cuál de ellos sería su recomendación para este caso.
Trabajo de 1 o 2 personas
Paso 1: Cargar Archivo
from scipy.io import wavfile
from IPython.display import Audio
rate, data = wavfile.read('archivo.wav') #lee archivo wav
#data=data[:,0] #activar esta línea si el archivo es stereo
display(Audio(data, rate=rate)) #reproduce el archivo wav
Paso 2: Visualizar audio
Graficar todo el audio con plot de matplotlib.
Graficar sólo 2 segundos
Determinar las unidades en los ejes.
Agregar títulos
Paso3: Obtener la "envolvente" o una señal proporcional a la intensidad
Graficar para obtener los "peak" de cada pulso.
Suavizar la señal (promedio móvil)
Paso4: Marcar los máximos de cada peak de cada pulso
Graficar los máximos (peak) de cada pulso
Determinar el tiempo (en segundos) exacto de cada pulso (hacer print de la lista de valores)
Determinar el intervalo (en segundos) exacto de entre cada pulso (hacer print de la lista de valores)
Paso5: Marcar los máximos de cada peak de cada pulso
En base a lo anterior determinar la frecuencia F=1/P y los Pulsos por Minutos (PPM=F*60). Mostrar en “title” dicho valor.
Plazo: Grupo Martes: hasta el Viernes 23:59. Grupo Viernes hasta el Lunes 23:59. Descuento de 5 décimas por cada hora de retraso.
Formato y Duración: Entregar sólo el link al video (máximo 4 minutos) en Youtube (debe tener visibilidad "No Listado")
Grupo: 1 o 2 personas. Si son 2 se espera un resultado más completo.
Modalidad: Pueden utilizar Zoom para grabar. De fondo deben tener el documento Colab y los recuadros de las cámaras de cada persona que presenta. Deben presentar todos los integrantes.
Contenido: 1) Breve introducción. 2) Presentación del código funcionado, 3) Explicación de las principales funciones., y 4) una conclusión, indicando todos los ámbitos de conocimientos y competencias aplicadas para desarrollar el trabajo. Por ejemplo indicar si fue necesario aplicar conocimientos de “fisiología, programación.... etc.” (por favor reflexionar bien este punto, deben ser muy exhaustivos para este recuento).
PhysioNet (https://physionet.org/) es una plataforma que ofrece acceso gratuito a través de la web a un conjunto de colecciones de registros de señales fisiológicas (Ingresar a la sección DATA y buscar la base de datos “APNEA-ECG”). Esta plataforma cuenta con el respaldo de importantes organismos en EE.UU.: el Instituto Nacional de Ciencias Médicas Generales (NIGMS) y el Instituto Nacional de Imágenes Biomédicas y Bioingeniería (NIBIB) con financiamiento del NIH.
Para el desarrollo de este trabajo se utilizará la base de datos “Apnea-ECG Database” que está disponible en el siguiente link: https://physionet.org/content/apnea-ecg/1.0.0/
Esta base de datos fue utilizada por PhysioNet / Computers en el Cardiology Challenge del año 2000. Consiste en 70 registros de ECG, cada uno de 8 horas de duración, algunos de los cuales están acompañados de señales complementarias para el estudio del sueño (movimientos respiratorios, oximetría, etc.) Ver una descripción completa de la problemática en http://ecg.mit.edu/george/publications/apnea-ecg-cinc-2000.pdf
La implementación de los algoritmos solicitados se deberá verificar utilizando los archivos de dos pacientes:
Paciente A03 (con apnea), específicamente: “a03.dat” (datos de ECG) y “a03r.dat” (datos respiratorios)
Paciente C03 (sin apnea), específicamente: “c03.dat” (datos de ECG) y “c03r.dat” (datos respiratorios)
Tal como se indica en la información adicional de la base de datos, se presentan resultados del análisis clínico. Por ejemplo se indica el sexo de cada paciente, la edad, la altura y el peso. Además se indica por cada paciente, el resultado del análisis clínico realizado por especialistas, indicando el total de minutos de cada estudio, y la clasificación de cada minuto como “apnea” o “no apnea”. Con ello se obtiene el “apnea index (AI)” que corresponde al número de apneas observadas por hora.
La plataforma cuenta con aplicación web de VISUALIZACIÓN a través de la cual es posible realizar una inspección general de los registros. A modo de ejemplo al seleccionar “Apnea-ECG Database” y el record “c03er” durante los primeros 25 segundos de registro, se observa los siguiente resultados (VER FIGURA1)
La descripción de las señales Resp C, Resp A, Resp N y Sp02 se detalla a continuación:
Resp C y Resp A, señales de esfuerzo respiratorio torácico y abdominal obtenidas mediante pletismografía de inductancia; Resp N, flujo de aire oronasal medido usando termistores nasales; y SpO2, saturación de oxígeno)
Los registros “.dat” corresponden a archivos binarios con las siguientes características: 16 bits per sample,100 samples per second, nominally 200 A/D units per millivolt.
Obtener los siguientes resultados a partir de los datos de cada paciente (A03 y C03) para el periodo entre hora 1 y la hora 4, es decir desde el minuto 60 al minuto 240.
Indique las características de cada ambos pacientes. Comente.
Frecuencia cardiaca promedio por minuto (FC). Grafique en barras cada minuto, desde el minuto 60 al minuto 240. (Utilice la función “title” y “xlabel” para incluir el título y las unidades del eje).
Frecuencia respiratoria promedio por minuto (FR). Grafique en barras cada minuto, desde el minuto 60 al minuto 240. (Utilice la señal de respiración del sensor oronasal)
Clasifique todos los minutos como “no apnea o apnea”. Grafique en barra azul los minutos "no apena" y barra roja "apnea". Para clasificar un minuto como "apnea" determine la disminución de frecuencia respiratoria (ej. < 8 FR/min) y/o la baja de SpO2 respecto de un umbral determinado (ej. <90%).
Determine si existe una relación entre la Frec. Cardiaca (FC) y la Frec. Respiratoria (FR) con el nivel de SpO2. Para ello realice un gráfico de dispersión con eje x = FC o FR y en eje y = SpO2 . ¿Existe una correlación? Implemente una línea de tendencia. Comente, los fundamentos fisiológicos de este punto.
Redacte una discusión general indicando todos los ámbitos de conocimientos y competencias aplicadas para desarrollar el trabajo. Por ejemplo indicar si fue necesario aplicar conocimientos de “álgebra, fisiología, programación…. etc.” (por favor reflexionar bien este punto, deben ser muy exhaustivos para este recuento) y dar ejemplos.
Ayuda incial: Al final hay un ejemplo Python con instrucciones para cargar los archivos
Plazo: Grupo Martes: hasta el Miércoles 10/dic 23:59. Grupo Viernes hasta el Sábado 13/dic 23:59. Descuento de 5 décimas por cada hora de retraso.
Formato y Duración: Entregar sólo el link al video (máximo 6 minutos) en Youtube (debe tener visibilidad "No Listado")
Grupo: 1 o 2 personas. Si son 2 se espera un resultado más completo.
Modalidad: Pueden utilizar Zoom para grabar. De fondo deben tener el código a la vista y la aplicación funcionando, junto con los recuadros de las cámaras de cada persona que presenta. Deben presentar todos los integrantes.
Contenido: 1) Breve introducción. 2) Presentación del código funcionado, 3) Explicación de las principales funciones., y 4) una conclusión, indicando todos los ámbitos de conocimientos y competencias aplicadas para desarrollar el trabajo. Por ejemplo indicar si fue necesario aplicar conocimientos de “fisiología, programación.... etc.” (por favor reflexionar bien este punto, deben ser muy exhaustivos para este recuento).
Datos PysioNet
Editor recomendado Visual Studio Code: https://code.visualstudio.com/download
Python (local, en computadora, no en la nube) https://www.python.org/downloads/
Para instalar librerías puede utilizar el siguiente comendo ejecutado en CMD la carpeta Script de Python: pip install XXXXXX
Obtener los siguientes resultados a partir de los datos del paciente A03 (ver minuto 60 aprox.).
Frecuencia cardiaca “instantánea” y promedio.
Frecuencia respiratoria “instantánea” y promedio.
Clasifique cada minuto como “no apnea o apnea”. Para ello determine la disminución de frecuencia respiratoria (<=8rpm) y/o la baja de SpO2 respecto de un umbral determinado (ej. <90%).
Incorporar ALARMA SONORA cuando se detecte apnea
Analice si existe una relación entre la Frec. Respiratoria y el nivel de SpO2.
Carpeta con material Inicial: Datos Paciente, Alarmas y Código Base LINK. Puede modificar el archivo "mp_basico01.py". Se recomienda NO modificar el archivo "mi_libreria.py"
En la siguiente imagen se muestra el resultado mínimo esperado (falta incorporar alarmas, detección de frecuencias promedio (minuto):