traductor

martes, 28 de abril de 2026

PROYECTO 4 — “Mini fMRI” + conectividad cerebral

 

PROYECTO 4 — “Mini fMRI” + conectividad cerebral

🎯 Objetivo

Simular y analizar datos tipo fMRI para:

  • medir conectividad cerebral
  • detectar patrones
  • comparar estados

👉 exactamente lo que se hace en investigación


🧠 IDEA CENTRAL

7

En neurociencia real:

  • tienes señales en el tiempo (por región)
  • analizas correlaciones
  • obtienes redes funcionales

⚙️ PARTE 1 — GENERAR “DATOS fMRI” SIMULADOS

💻 PASO 1 — Setup

import numpy as np
import matplotlib.pyplot as plt

🧠 PASO 2 — Red base (estructura cerebral)

N = 10 # regiones cerebrales
T = 300 # tiempo

# conectividad estructural
W = np.random.randn(N, N)
W = W / np.max(np.abs(W))

🔁 PASO 3 — Generar actividad (tipo cerebro)

g = 0.9 # estado crítico

def step(x):
noise = 0.05 * np.random.randn(N)
return np.tanh(g * np.dot(W, x)) + noise

x = np.random.randn(N)

data = []

for t in range(T):
x = step(x)
data.append(x.copy())

data = np.array(data)

📊 PASO 4 — Visualizar señales

plt.figure(figsize=(10,5))

for i in range(5):
plt.plot(data[:, i])

plt.title("Señales tipo fMRI")
plt.show()

🧠 PARTE 2 — CONECTIVIDAD FUNCIONAL

👉 aquí empieza lo importante

💻 PASO 5 — Correlación entre regiones

corr = np.corrcoef(data.T)

plt.imshow(corr)
plt.colorbar()
plt.title("Conectividad funcional")
plt.show()

🧠 Interpretación

  • valores altos → regiones sincronizadas
  • valores bajos → independientes

👉 esto es base de:

  • conectividad funcional

🔬 PARTE 3 — DETECTAR REDES (muy importante)

💻 PASO 6 — Umbral simple

threshold = 0.5

network = (corr > threshold).astype(int)

plt.imshow(network)
plt.title("Red cerebral (umbral)")
plt.show()

🧠 Qué estás haciendo

👉 construir un “mini conectoma”


⚡ PARTE 4 — CAMBIAR ESTADOS CEREBRALES

💻 PASO 7 — Comparar condiciones

def simulate(g):
x = np.random.randn(N)
data = []

for t in range(T):
noise = 0.05*np.random.randn(N)
x = np.tanh(g*np.dot(W,x)) + noise
data.append(x.copy())

return np.array(data)

data_low = simulate(0.5)
data_crit = simulate(0.9)
data_high = simulate(1.2)

📊 PASO 8 — Comparar conectividad

corr_low = np.corrcoef(data_low.T)
corr_crit = np.corrcoef(data_crit.T)
corr_high = np.corrcoef(data_high.T)

plt.figure(figsize=(12,4))

plt.subplot(1,3,1)
plt.imshow(corr_low)
plt.title("Bajo")

plt.subplot(1,3,2)
plt.imshow(corr_crit)
plt.title("Crítico")

plt.subplot(1,3,3)
plt.imshow(corr_high)
plt.title("Caótico")

plt.show()

🧠 RESULTADO CLAVE

👉 Verás que:

  • estado crítico → patrones ricos
  • estado bajo → pobre
  • estado caótico → ruido

👉 esto coincide con resultados reales


🔬 PARTE 5 — INTERPRETACIÓN (nivel investigación)

Esto conecta directamente con:

  • actividad en reposo
  • redes cerebrales
  • enfermedades (rigidez vs caos)

Relaciona con:

  • red por defecto

🚀 EXTENSIONES (muy importantes)

🔹 1. Simular enfermedad

W[0,:] = 0 # desconectar región

🔹 2. Estimulación cerebral

x[0] += 2

🔹 3. Modularidad (más realista)

  • crear grupos de regiones

🧭 QUÉ HAS LOGRADO

Ya estás haciendo lo esencial de:

👉 neuroimagen moderna
👉 modelos cerebrales
👉 trabajo tipo Gustavo Deco


🧠 IDEA FINAL

Has pasado de:

  • neurona → red → dinámica → datos

👉 este es exactamente el pipeline real en neurociencia computacional



No hay comentarios: