# Plan F9: OpenMM en directo — iones, poros y la bomba sodio-potasio > **Qué es este documento**: el plan y el análisis de la «tercera vía» que salió al comparar motores (chat del 02/09/2026): en vez del sandbox JS (física simplificada, en el navegador) o de OpenMM en película (física completa, fuera de línea), **OpenMM corriendo en la GPU mientras miras**, con el visor leyendo fotogramas según salen y las teclas viajando de vuelta a Python. Es lo que hace NanoVer, el precedente académico de la «nave». El objetivo que pediste para estrenarla: **reproducir una bomba sodio-potasio como la de un músculo, excitarla para contraer y relajar**. Este plan dice con números qué parte de eso es posible en tu GTX 1650, a qué escala se puede hacer cada pieza sin hacer un mock, y construye la escalera desde un electrolito excitable hasta la visita a la bomba real. > > Escrito el 02/09/2026 con OpenMM 8.6 (la última versión), Python 3.14, sin CUDA (OpenCL sobre la GeForce GTX 1650), y con la producción de 100 ns de F5 todavía ocupando la GPU. > > **Estado (05/09/2026): F9a–F9e ENTREGADAS.** F9b (poro con voltaje) y F9c (bomba de juguete) comparten el servidor con `--exp poro|bomba`; F9d es `bomba.html` con las estructuras reales; F9e es `musculo.html`, sin servidor. Lo aprendido al construirlas está en la entrada P32 del cuaderno; lo esencial: **una sola membrana en caja periódica no separa nada** (los dos lados se tocan al dar la vuelta — bien para el canal, que así cierra circuito; para la bomba hacen falta dos membranas); **un poro estrecho e hidrófobo se seca solo** y sin agua no conduce (hubo que tapizarlo de grupos polares, ±0,12 e: más carga lo moja igual pero atrapa el catión dentro); y **contar cruces por cambio de signo no vale** (un ion parado en el poro tiembla y sumaba 342 cruces en 574 ps: hay que contar con histéresis). > > **Estado (03/09/2026): F9a ENTREGADA** — `f9_servidor.py` + `directo.html`, con los números en la entrada P31 del cuaderno. Lo medido: 2.597 átomos a **6,5 ps/s** a solas y 4–4,5 con el visor pidiendo fotogramas (15–25× el motor JS de F7 con cinco veces más átomos); conductividad **10,1 S/m** con 9,9 ns de promedio a 0,1 V/nm, frente a los 8,5 experimentales a 1 M. Tres correcciones que salieron al construirlo, ya aplicadas: (1) la corriente se mide **solo sobre los iones** — el agua no transporta carga y su ruido es ~100× la señal, con ella dentro la conductividad saltaba entre 15 y 38 S/m; (2) el campo **sí** se aplica a todas las cargas, al revés que en F7d, porque una caja periódica no tiene superficie y por tanto no hay campo despolarizante (P31); (3) la cabecera JSON de cada fotograma se rellena a múltiplo de 4 bytes o el navegador no puede leer los `float32`. Pendientes: **F9b–F9e** (secciones 4). --- ## 0. Resumen en una pantalla | Subfase | Qué es | Átomos | En directo | Excitar / relajar | |---|---|---|---|---| | **F9a** | La tubería: `f9_servidor.py` + `directo.html` + teclas de vuelta; estreno con un electrolito bajo campo | 1.000–5.000 | sí, unos ps/s | conectar / desconectar el campo: los iones derivan y se relajan | | **F9b** | El poro con voltaje: dos depósitos, una membrana de juguete con un poro cargado, NaCl, campo | 5.000–10.000 | sí, ~1 ps/s; un ion cruza cada pocos minutos de reloj | voltaje on/off: corriente iónica, curva I–V, selectividad | | **F9c** | La bomba de juguete: acceso alternante coreografiado (dos compuertas + un sitio que cambia) sobre iones y agua reales | 5.000–10.000 | sí | pulsar el ciclo: 3 Na⁺ fuera, 2 K⁺ dentro; el gradiente se acumula | | **F9d** | La bomba real: visita a 3WGU (E1, 3 Na⁺ ocluidos) y 2ZXE (E2, 2 K⁺); MD corta opcional en membrana POPC | 11.000 (proteína) / ~250.000 (con membrana y agua) | no (0,03 ps/s: película lenta) | no: el ciclo dura 10 ms y su química no es clásica (sección 2) | | **F9e** | El músculo excitable, a su escala: modelo eléctrico + Ca²⁺ + puentes cruzados, en JS y en directo | no es atómico | sí | estímulo → potencial de acción → Ca²⁺ → fuerza; SERCA lo relaja | **La corrección importante, primero**: la bomba Na⁺/K⁺ **no contrae el músculo**. Es el cargador de la batería: restablece los gradientes de sodio y potasio que cada impulso gasta. Lo que contrae son los puentes de miosina sobre la actina, disparados por calcio; lo que relaja es otra bomba, SERCA, prima hermana de la Na⁺/K⁺. Sección 1. --- ## 1. Lo que pediste, traducido a lo que ocurre en un músculo La cadena real de «excitar para contraer y luego relajar», con el papel de cada pieza y su escala: | Paso | Quién | Qué hace | Escala | |---|---|---|---| | 1 | Neurona motora → acetilcolina | abre canales en la placa motora | ms, nm | | 2 | **Canales de Na⁺** (Nav1.4) | se abren: entra Na⁺, el potencial de membrana salta de −90 a +30 mV: el **potencial de acción** | ~1 ms; cada canal deja pasar ~10⁷ iones/s | | 3 | **Canales de K⁺** | se abren después: sale K⁺, la membrana vuelve a −90 mV | ms | | 4 | Túbulos T → Cav1.1 → **RyR1** | el impulso abre las compuertas del retículo: **sale Ca²⁺** al citoplasma | ms | | 5 | Troponina + tropomiosina | el Ca²⁺ destapa los sitios de la actina | ms | | 6 | **Miosina** | las cabezas se agarran a la actina y tiran (golpe de fuerza de ~10 nm), gastando un ATP por golpe: **contracción** | ms por golpe; miles de millones de cabezas por fibra | | 7 | **SERCA** | bombea el Ca²⁺ de vuelta al retículo gastando ATP: **relajación** | decenas de ms | | 8 | **Bomba Na⁺/K⁺** | saca 3 Na⁺ y mete 2 K⁺ por cada ATP, ~100 ciclos por segundo: repone lo gastado en los pasos 2 y 3 | 10 ms por ciclo; trabaja siempre, no solo al contraer | Así que «excitar» es el paso 2 (canales), «contraer» es el 6 (motores), «relajar» es el 7 (SERCA), y la bomba Na⁺/K⁺ es el paso 8: sin ella, tras unos minutos de trabajo los gradientes se agotan y el músculo deja de ser excitable (es lo que hace la ouabaína, y por qué el corazón responde a la digoxina). SERCA y la Na⁺/K⁺ son de la misma familia, las **ATPasas de tipo P**: mismo plan de dominios, mismo aspartato que se fosforila, mismo ciclo de acceso alternante E1/E2 (Post–Albers). Entender una es entender las dos. **Lo que sí se conserva de tu idea**: el fenómeno central de todo esto es *iones cruzando una membrana a través de proteínas, empujados por gradientes y por el campo eléctrico, y una máquina que gasta ATP para devolverlos*. Eso es exactamente la escalera de F9: campo sobre iones (F9a), un poro con voltaje (F9b), el acceso alternante (F9c), la máquina real (F9d) y el músculo a su escala (F9e). --- ## 2. La escalera honesta de escalas: qué cabe en la GTX 1650 La referencia medida: F5, 18.416 átomos con PME, va a ~100–125 ns/día en la GeForce. El coste crece más o menos con el número de átomos (los sistemas pequeños van peor de lo que tocaría por la sobrecarga de lanzar núcleos a la GPU; los grandes, algo mejor). | Sistema | Átomos | Lo que hay que ver | Cuánto dura eso | Velocidad estimada aquí | Tiempo de reloj para verlo | |---|---|---|---|---|---| | Electrolito bajo campo (F9a) | 1.000–5.000 | deriva, doble capa, relajación | ps–ns | 2–5 ps/s (a medir; la plataforma CPU puede ganar por debajo de 1.000 átomos) | **segundos–minutos** | | Poro de juguete con voltaje (F9b) | 5.000–10.000 | un ion cruzando | cada 1–10 ns a ~1 V | ~1 ps/s | **minutos por ion** | | Canal real en membrana (gramicidina, KcsA) | 25.000–100.000 | un ion cruzando el filtro | cada 10–100 ns con voltajes altos | 0,2–0,5 ps/s | horas–días por ion: película, no directo | | **Bomba Na⁺/K⁺ en membrana** (F9d) | ~250.000 | un ciclo completo | **10 ms**; cada transición E1↔E2, µs–ms | ~5–10 ns/día | 10 ms = 10⁷ ns ≈ **miles de años** | | Fosforilación del aspartato (ATP → ADP + P) | — | una reacción química | ps, pero es **cuántica** (P24) | no clásica | ni con más GPU: QM/MM o potenciales reactivos | | Sarcómero (F9e) | > 10¹² | contracción | ms | fuera de toda escala atómica | modelo eléctrico + puentes cruzados | Para calibrar: la investigación de punta simula la bomba durante **cientos de nanosegundos** alrededor de instantáneas cristalinas (Castillo, Roux y otros, Nat. Commun. 2015: modelo construido sobre 2ZXE en membrana POPC con CHARMM, 300 ns sin sesgo para ver el canal de acceso lleno de agua por el que entra el K⁺), y para la transición entre estados tuvieron que **empujarla** con dinámica dirigida (*targeted MD*, 58 tramos de 1 ns) porque, en sus palabras, su duración excede lo que la MD sin sesgo alcanza. Los superordenadores dedicados (Anton) llegan a milisegundos en sistemas de 10⁵ átomos, pero siguen sin poder hacer la química del ATP. **Nadie ve un ciclo completo de la bomba emerger de la física atómica**; se reconstruye a partir de estructuras (E1 con 3 Na⁺, E2 con 2 K⁺, estados intermedios) más simulaciones cortas y experimentos. Esa es la verdad que F9d cuenta, y por eso F9c existe: para ver el *principio* (acceso alternante) con iones y agua de verdad, con el ciclo coreografiado como en la realidad lo coreografía el ATP. --- ## 3. Arquitectura de la vía en directo ### 3.1 Principio: sin dependencias nuevas Todo con lo que ya hay: Python + OpenMM + numpy, y la biblioteca estándar para la red (`http.server`, `ThreadingHTTPServer`). Nada de gRPC, websockets ni frameworks. **Dos procesos**: ``` abrir_laboratorio.bat ├── python -m http.server 8321 (estáticos, como hasta ahora) └── python f9_servidor.py (puerto 8322, en su propia ventana; solo si existe) ├── hilo de simulación: OpenMM en la GPU, sim.step(N) en bucle, │ escribe el último fotograma en un búfer doble └── hilos HTTP: sirven /info, /frame, /medidas; reciben /orden directo.html (abierto desde el índice en 8321) · cada 50–100 ms: fetch http://localhost:8322/frame → pinta (con interpolación) · teclas → fetch POST /orden {accion, valor} · anillo de los últimos N fotogramas: rebobinar unos segundos ``` `f9_servidor.py` responde con `Access-Control-Allow-Origin: *` (el visor vive en otro puerto) y **solo escucha en 127.0.0.1**: nunca se expone fuera de la máquina. ### 3.2 Protocolo (deliberadamente tonto) | Ruta | Método | Contenido | |---|---|---| | `/info` | GET | JSON: experimento, nº de átomos, códigos de elemento (los de `CELL1`: C0 N1 O2 P3 H4 Na5 Cl6 K7 Mg8 neutro9, más «pared» 10), cargas, caja, lista de órdenes admitidas y sus rangos, plataforma y ps/s medidos | | `/frame` | GET | binario: `t_ps` float32, `n` uint32, `xyz` float32×3n en Å (**el mismo cuerpo de fotograma que `CELL1`**), seguido del JSON de medidores (corriente, T, E, contadores…) | | `/orden` | POST | JSON `{accion, valor}`: `campo` (V/nm), `T` (K), `pausa`, `velocidad` (pasos por lote), `sal` (±1 par: reconstruye), `voltaje`, `ciclo` (F9c), `grabar` (on/off), **`exp`** (montar otro experimento sin reiniciar el servidor) | > **Un solo servidor para los tres experimentos** (05/09/2026). Cada experimento ocupa la GPU entera, así que solo puede correr uno; pero eso hacía que abrir la tarjeta de F9b o F9c enseñara lo que hubiera en marcha —normalmente F9a— sin decir nada. Arreglado: el experimento dejó de ser un argumento fijo (`args.exp`) para ser estado del servidor (`LAB.exp`), hay una orden `exp` que monta otro, y el visor lo pide por la URL: `directo.html?exp=poro`. Montar uno cuesta **unos 3 segundos** (lo lento del arranque es crear el contexto de OpenCL, que ya está hecho). Mientras tanto el visor avisa y sigue enseñando el anterior. Las órdenes se encolan y se aplican **entre lotes de pasos**. Las que son un parámetro global de una fuerza (`E`, el voltaje, el estado del sitio de F9c) se cambian al instante con `context.setParameter`; la temperatura con `integrator.setTemperature`; añadir o quitar sal reconstruye el sistema (pausa de unos segundos, avisada en el HUD). **Grabación**: con `grabar` el servidor escribe además un `trayectorias/f9__.bin` en formato `CELL1`: cualquier sesión en directo se convierte en película reproducible en `trayectoria.html`. Es la garantía de que lo visto no se pierde (P16). ### 3.3 Coste de red y de GPU - 5.000 átomos × 12 B = 60 KB por fotograma; a 20 fotogramas/s, 1,2 MB/s en localhost: irrelevante. - La simulación y el servidor de estáticos no compiten. **La simulación en directo y la producción de F5 sí** (misma GPU): mientras la película de 100 ns esté corriendo, F9a se prueba con la plataforma CPU o se espera. `plataforma()` se copia de `f5_simular.py` (elige la GeForce, no la Intel, P18) y se añade `--plataforma cpu|opencl` para medir cuál gana en sistemas pequeños. - Latencia tecla → efecto: un lote de pasos más un sondeo, ~100–200 ms. Suficiente. ### 3.4 Por qué no usar NanoVer directamente [NanoVer](https://github.com/IRL2/nanover-server-py) (`pip install nanover-server`) hace exactamente esto con OpenMM, con cliente de realidad virtual para Meta Quest y cliente Python, y sirve de referencia de diseño (fotogramas + estado compartido + órdenes). Pero no documenta un cliente de navegador, trae su propia pila de red y su propio formato, y el valor didáctico del proyecto está en que la tubería sea nuestra y de 300 líneas. Se cita, no se instala. Si algún día se quiere VR, es la puerta. --- ## 4. Las subfases ### F9a — La tubería, estrenada con un electrolito excitable - **Sistema**: caja periódica de ~3 nm con ~900 aguas TIP3P y NaCl ~1 M (16 pares), PME, 300 K, Langevin 1/ps, 2 fs con SHAKE. ≈ 2.700 átomos. Campo uniforme `E` en x como parámetro global de una `CustomExternalForce` (`-q*E*x`, receta del cookbook de OpenMM). Es el mismo experimento que F7d en modo circuito, con física completa. - **Teclas** (en `directo.html`): `←`/`→` campo ±0,1 V/nm, `0` apagar, `↑`/`↓` T, `+`/`-` sal, `P` pausa, `,`/`.` velocidad, `G` grabar, `6` ocultar agua, `V` la capa de campos (la de F4 enganchada al fotograma recibido). - **Excitar / relajar**: al conectar E los Na⁺ y Cl⁻ derivan en sentidos opuestos y aparece una corriente estable (caja periódica = circuito cerrado); al desconectar, el temblor browniano borra la deriva en picosegundos. El HUD muestra corriente, movilidad por especie y conductividad. - **Número**: linealidad de la deriva con E entre 0,05 y 0,2 V/nm; conductividad molar dentro del 10–30 % por debajo de Kohlrausch, como reportan los modelos clásicos (J. Phys. Chem. B 2023). Y el dato de infraestructura: **ps/s reales** para 500, 2.700 y 5.000 átomos en OpenCL y en CPU, anotados en el cuaderno. - **Entregables**: `f9_servidor.py`, `directo.html`, el `.bat` ya preparado lo arranca solo, botón «abrir» en la tarjeta F9 del índice, captura. **2 sesiones.** ### F9b — El poro con voltaje - **Sistema**: caja alargada en z; una «membrana» de dos láminas de partículas fijas (masa 0 en OpenMM: no se mueven, sí chocan) con un poro cilíndrico de radio 3–5 Å; el borde del poro lleva cargas parciales negativas ajustables (la caricatura de los carbonilos del filtro de un canal de K⁺); depósitos de NaCl (o KCl) a ambos lados; campo en z ⇒ voltaje = E·L_z. Entre 5.000 y 10.000 átomos. - **Teclas**: `←`/`→` voltaje ±100 mV, `0` apagar, `C` carga del borde ±, `T` NaCl↔KCl↔mezcla, `+`/`-` sal, `5` panel de conteo. - **Qué se ve**: con voltaje, cationes en fila por el poro, agua en cadena (la fila de aguas es real: así conduce la gramicidina), los aniones rechazados por el borde negativo; cada cruce se cuenta. Sin voltaje, nada neto: solo temblor. Con el borde neutro, pasan ambos. - **Números**: corriente vs voltaje (curva I–V), conductancia en pS (los nanoporos de carbono dan decenas a cientos de pS a 0,5 M), selectividad Na⁺/K⁺/Cl⁻; comparación con la referencia de nanoporos simulados (sección 8). Y la confirmación de que un canal **no** es una bomba: la corriente siempre baja el gradiente, nunca lo sube. - **Alternativa real, como película**: gramicidina A en DMPC construida con `Modeller.addMembrane('DMPC')`, ~25.000 átomos, 0,3 ps/s: un ion cada varias horas. Se graba, no se mira en directo. - **2–3 sesiones.** ### F9c — La bomba de juguete: acceso alternante (opcional, pero es la que responde a tu pregunta) La regla de una bomba es que **nunca tiene las dos puertas abiertas a la vez**, y que el sitio de unión cambia de preferencia entre una cara y otra. Eso se puede construir con física real de iones y agua y un ciclo coreografiado (como en F3 las bases eran rígidas: la forma es dato, el resto emerge): - **Sistema**: el poro de F9b con **dos compuertas** (paredes semiarmónicas que se activan o desactivan con un parámetro global) y un **sitio** en medio: unas pocas partículas fijas con carga y tamaño que alternan entre dos estados, «cavidad pequeña» (encaja mejor el Na⁺ desnudo) y «cavidad grande» (encaja mejor el K⁺). El cambio de estado es un parámetro global (`CustomNonbondedForce`); las compuertas, otro. - **Ciclo** (tecla `ciclo` paso a paso o automático, imitando E1→E1P→E2P→E2): puerta interna abierta + sitio pequeño → capta Na⁺ del lado citoplásmico → cierra → sitio grande + puerta externa abierta → suelta Na⁺ fuera y capta K⁺ → cierra → sitio pequeño + puerta interna abierta → suelta K⁺ dentro. Contadores: Na⁺ transportados fuera, K⁺ dentro, ATP «gastados» (uno por ciclo). - **Qué se ve**: el gradiente **acumulándose** ciclo a ciclo (más Na⁺ fuera, más K⁺ dentro) y, con una capa F4 sobre la caja, el **potencial de membrana** naciendo de la separación de cargas. Apagar el ciclo y abrir un poro de F9b al lado: los iones vuelven cuesta abajo y la corriente que sale es el «potencial de acción» de juguete. **Excitar y relajar con causa física.** - **Honestidad**: el ciclo y el cambio del sitio están coreografiados (en la realidad los dirige la fosforilación por ATP, que es química); todo lo demás, iones, agua, campo, gradiente, potencial, emerge. Se declara en el HUD. - **2–3 sesiones.** ### F9d — La bomba real: visita y, si se quiere, MD corta - **Visita (sin física, estilo F1)**: cargar en el visor `3WGU` (E1·AlF₄⁻·ADP·3Na⁺, 2,8 Å, Kanai 2013: los tres Na⁺ ocluidos) y `2ZXE` (E2·MgF₄²⁻·2K⁺, 2,4 Å, Shinoda 2009: los dos K⁺ con sus aguas). Ver los sitios de iones entre las hélices transmembrana, los tres dominios citoplásmicos (A, N, P) y el aspartato que se fosforila; superponer las dos estructuras para ver qué se mueve entre E1 y E2. Requiere que `visor.html` (o una copia `visor2.html`) acepte `?pdb=data/3WGU.pdb`. **1 sesión.** - **MD corta (opcional, película lenta)**: `Modeller.addMembrane(POPC)` + agua + NaCl/KCl alrededor de 3WGU o 2ZXE → ~200.000–250.000 átomos → 5–10 ns/día. Diez nanosegundos (1–2 días de GPU) enseñan si los iones ocluidos se quedan en su sitio, la hidratación de los sitios y el canal de acceso lleno de agua del que habla Castillo 2015. Se retransmite en «directo» a 0,03 ps/s (un fotograma útil cada pocos minutos) y se graba. **2 sesiones** (construir la membrana es lo delicado). - **Lo que no se verá, dicho antes**: la transición E1→E2 (µs–ms), la hidrólisis del ATP (química) y, por tanto, el ciclo. Es la sección 2 en acción. ### F9e — El músculo excitable, a su escala (no atómico, y se dice) - **Qué**: un modelo en JS, en directo, con las ecuaciones a la vista: membrana de Hodgkin–Huxley (canales de Na⁺ y K⁺, bomba como corriente de fondo), liberación y recaptura de Ca²⁺ (SERCA), y un modelo de puentes cruzados de dos estados (Huxley 1957) que da fuerza. Teclas: estímulo único (sacudida), frecuencia (tétanos), bloquear Na⁺ (tetrodotoxina), bloquear la bomba (ouabaína: los gradientes se agotan en minutos simulados y el músculo deja de responder), fatiga. - **Para qué**: es el único nivel en el que «excitar para contraer y relajar» se puede simular *y* comparar con un músculo real (curva fuerza–frecuencia, duración de la sacudida). Y conecta con las piezas atómicas por visitas: SERCA (1SU4, Toyoshima 2000), miosina S1 (2MYS), el núcleo de la troponina (1J1E), Nav1.4 humano (6AGF). - **2 sesiones.** --- ## 5. Cambios en el laboratorio (hechos hoy y pendientes) | Pieza | Estado | Detalle | |---|---|---| | `abrir_laboratorio.bat` | **hecho** | si existe `f9_servidor.py`, lo arranca en su propia ventana (`cmd /k`, para ver errores) en el puerto 8322; `abrir_laboratorio.bat sinf9` lo omite; si no existe, avisa y sigue | | `index.html` | **hecho** | tarjeta F9 «en preparación» con enlace a este plan; el botón «abrir» se añade cuando exista `directo.html` | | `README.md` | **hecho** | párrafo de F9 en «Cómo abrirlo» y fila en «Qué hay» | | `f9_servidor.py` | **hecho** (F9a) | `plataforma()` copiada de F5; `--caja --sal --T --E --lote --puerto --plataforma`; grabación a CELL1 con la tecla G | | `directo.html` | **hecho** (F9a) | mismo render que F1/F2/F5; sondeo en vez de fichero, teclas → `/orden`, anillo de 400 fotogramas para rebobinar (Z, K/L), gráfica de excitación y relajación (5) | | `trayectoria.html` | pendiente (F7/F9) | códigos K/Mg/neutro/pared y aguas visibles (compartido con el plan F7) | | `visor.html?pdb=` | pendiente (F9d) | cargar cualquier PDB de `data/` | | `data/3WGU.pdb`, `data/2ZXE.pdb` | pendiente (F9d) | descargar del RCSB | --- ## 6. Riesgos y decisiones tomadas - **GPU compartida**: no lanzar F9a en la GeForce mientras corra la producción de F5 (se frenan las dos). Probar en CPU o esperar a que acabe (madrugada del 03/09). - **Sobrecarga en sistemas pequeños**: por debajo de ~1.000 átomos la plataforma CPU de OpenMM puede ir igual o más rápida que OpenCL. F9a lo mide y lo anota; el servidor elige por defecto la mejor medida. - **Seguridad**: el servidor escucha solo en `127.0.0.1`; las órdenes admitidas son una lista cerrada con rangos (nada de ejecutar texto). Para publicar el sitio en estático (README), F9 simplemente no se sube: el `.bat` y el servidor son locales. - **Reconstrucciones**: cambiar el número de iones o el radio del poro reconstruye el sistema (segundos): el visor lo avisa y conserva el anillo de fotogramas. - **Partículas fijas** (membrana y sitio de F9b/c): masa 0 en OpenMM (`setParticleMass(0)`), estándar. - **Campo uniforme con PME**: compatible (es la práctica de los papers de conductividad); el voltaje efectivo en una caja periódica es E·L_z. - **Mock vs simulación**: en F9c el ciclo está coreografiado; se declara en el HUD y en el cuaderno. Todo lo demás de F9 son leyes + condiciones, y cada subfase lleva su número (sección 4). - **Lo que este plan no promete**: la bomba real funcionando (sección 2). Si alguna vez interesa, el camino de investigación es grano grueso + muestreo acelerado + QM/MM para la química: otra liga. --- ## 7. Orden y estimación | Paso | Entregable | Sesiones | Depende de | |---|---|---|---| | 1 | ✓ **F9a**: servidor + visor + electrolito + medición de ps/s (03/09/2026) | 2 | GPU libre (F5 terminada) | | 2 | ✓ **F9b**: poro con voltaje, cruces, selectividad (05/09/2026) | 2–3 | 1 | | 3 | ✓ **F9c**: bomba de juguete, ciclo, gradiente, potencial (05/09/2026) | 2–3 | 2 | | 4 | ✓ **F9d**: visita a 3WGU/2ZXE en `bomba.html` (la MD corta en membrana sigue pendiente) | 1 (+2) | — | | 5 | ✓ **F9e**: músculo excitable en JS, `musculo.html` (05/09/2026) | 2 | — (independiente) | | 6 | cuaderno: entradas con los números medidos | continuo | — | Total: **9–13 sesiones**. F9a puede empezar en cuanto termine la producción de F5; F7d (campo en el sandbox JS) no es requisito, pero conviene hacerlo antes para tener la misma física en las dos vías y compararlas. --- ## 7b. Y después: F10, la primera química Ninguna subfase de F9 rompe ni forma enlaces: la conectividad es fija, como en F5. La única frontera que la tubería de F9 permite cruzar es sustituir el campo de fuerzas por un potencial que **sí** sepa de electrones (aprendizaje automático o cuántico ligero) para una molécula pequeña, y tirar de un enlace hasta que ceda. Es la **F10**, con su propio plan: `plan_F10_enlace.md`. Reutiliza `directo.html` y el protocolo de la sección 3 tal cual (otro servidor, puerto 8323). ## 8. Referencias - **NanoVer** — [servidor en GitHub](https://github.com/IRL2/nanover-server-py) · [artículo del marco iMD-XR (arXiv, 2026)](https://arxiv.org/abs/2606.30678) · [NanoVer Server en JOSS](https://joss.theoj.org/papers/10.21105/joss.08118.pdf). Precedente directo de la vía en directo (OpenMM + streaming de fotogramas + órdenes de vuelta). - **Bomba Na⁺/K⁺, estructuras**: [3WGU](https://www.rcsb.org/structure/3WGU) (Kanai et al., *Nature* 2013, E1·3Na⁺, 2,8 Å) · [2ZXE](https://www.rcsb.org/structure/2ZXE) (Shinoda et al., *Nature* 2009, E2·2K⁺, 2,4 Å) · [estructuras crio-EM humanas en tres estados (Nat. Commun. 2022)](https://www.nature.com/articles/s41467-022-31602-y). - **Bomba Na⁺/K⁺, dinámica molecular**: Castillo, Rui, Basilio, Das, Roux, Latorre, Bezanilla, Holmgren, *Mechanism of potassium ion uptake by the Na⁺/K⁺-ATPase*, Nat. Commun. 2015 — [PMC4515779](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4515779/) · [simulaciones de membranas bajo concentraciones asimétricas (Roux, J. Gen. Physiol. 2013)](https://rupress.org/jgp/article/142/4/465/43344/Molecular-dynamics-simulations-of-membrane). - **Membranas en OpenMM**: [`Modeller.addMembrane` (guía de usuario)](https://docs.openmm.org/latest/userguide/application/03_model_building_editing.html) · [API](https://docs.openmm.org/latest/api-python/generated/openmm.app.modeller.Modeller.html). - **Campo eléctrico en OpenMM**: [cookbook, fuerza externa constante](https://openmm.github.io/openmm-cookbook/dev/notebooks/cookbook/Applying%20a%20Constant%20External%20Force.html) · conductividad clásica vs experimental: [J. Phys. Chem. B 2023](https://pmc.ncbi.nlm.nih.gov/articles/PMC10068734/). - **Nanoporos con voltaje**: [nanotubos de carbono selectivos a cloruro (MD, PMC2941003)](https://pmc.ncbi.nlm.nih.gov/articles/PMC2941003/) · [forma de la curva I–V en nanoporos (MD, PMC4863172)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4863172/). - **Plan hermano**: `plan_F7_soluciones.md` (F7d comparte la física del campo; F7-rigor comparte el formato de película). Cuaderno: P19–P26.