¿Qué tal programa

la Naturaleza?

T3chFest 2023-03-03

https://slides.com/alexfernandez/que-tal-programa-la-naturaleza-t3chfest/

📋 Qué vamos a ver hoy

🧬 ¿Código? ¿Qué código?

 

⭃ Haciendo pull requests

 

👓 Revisión de código

 

🎓 Lecciones

🎩 Vuestro anfitrión hoy

📛 Alex Fernández

 

👴 Desarrollador de JavaScript viejúner


🏚️ 20+ años de experiencia


🏦 10+ years en bancos y telcos


🦄 10+ years en startups


🐘 @pinchito@mastodon.social

🧬 ¿Código? ¿Qué código?

Image source: Bert Hubert

🧬 ¿Qué tenemos por ahí?

Un par de bases = 2 bits (A,C,G,T)

 

Tres pares de bases = 1 aminoácido

 

1 "byte" = 6 bits (0 - 63)

Un código, 22 aminoácidos

⭃ Haciendo pull requests

Image source: el menda

Entre bacterias queda

Original image: Adenosine

Transferencia horizontal de genes

Los virus también juegan

¿Cómo se aceptan los PRs?

En su mayor parte: no tenemos ni idea

 

Hay muchas comprobaciones "automáticas"

 

Y por supuesto los virus se las saltan

 

Los humanos somos 8% virus (60k identificados)

 

Y las vacunas también se las saltan

💉 Vacunas de mRNA

En esencia, son una forma de inyectar una PR

 

El cuerpo acepta un gen extraño (mRNA) y produce proteína S viral

 

Hay que "engañarle" usando varios trucos:

  • aminoácidos "falsos" modificados,
  • una cabecera copiada de nuestros genes,
  • metadatos para que las proteínas salgan de la célula,
  • cambios en la secuencia para que se produzcan más proteínas,
  • y una proteína S modificada para que se sostenga mejor.

👓 Revisión de código

✅ Criterios

🧹 Limpieza de código

 

👯 Eliminación de duplicados

 

📦 Modularidad

 

☔ Resiliencia

 

🔌 Compatibilidad hacia atrás

🧹 Limpieza de código

¿Cómo evaluamos la limpieza?

 

Los números son para las máquinas

 

El código es para humanos

 

¿Es legible? ¿Se entiende? ¿Para qué sirve?

¿Cuánto código hay?

🔎 ¿Cuánto hemos entendido?

Vocabulario ACGT descifrado en 1965

 

Miles de investigadores en biología molecular

 

Se publican 100 artículos a la hora

🧍 Humanos: 700 MB

~ 1 CD ROM

 

¿20k genes?

 

Entendemos ¿~3% del código genético?

Image source: Black and White

🦠 Bacterias: ~1 MB

~ 1 Floppy disk

 

E. coli natural: 1.1 MB

 

E. coli refactorizada: 1.1 -> 1.066 MB

 

Se reproduce un 50% más despacio

Image source: Sreejithk2000

✂️ CRISPR

Descubierto en

las salinas de Santa Pola

por Francis Mojica

(1993)

Extrañas secuencias enterradas en el código genético

de unas arqueas extremófilas

 

Mecanismo anti-virus bacteriano

✂️ CRISPR (II)

Premio Nobel de Química 2020

para Charpentier y Doudna

Edición de genes (con precisión de ~5 bytes)

 

Uso en terapias génicas

 

"Parches binarios"

Image source: Nobel Prize

🦠 Virus: ~8 kB

~ 1 consola Pong

 

< 1 Apollo 11 inflight computer (ROM)

 

COVID-19: 7.5 KBytes

29 genes (proteínas)

 

No sabemos qué hace el ~10%

Image source: Jeff Keyzer

Image source: Grabert

🛩️ BBC Micro Aviator: <34 kB

~ 1 virus grande (bacteriófago lambda)

 

Completamente desensamblado

 

Lo ha descifrado entero una persona

Image source: Mark Moxon

🧬 La naturaleza del código genético

Código para un ordenador que no entendemos

 

Explicado y fabricado en el mismo código

 

4 mil millones de años de historia

 

Código que se modifica a sí mismo

 

¿Hay algo más allá de tres bases -> un aminoácido?

🧹 Limpieza de código: 1/10

👯 Eliminación de duplicados

La raíz de todos los males ™

 

Duplicas código como camote

 

Modificas en un sitio

 

Se te olvidan 17

🐦 No, si cuando se pone...

Aves: 1/3 del tamaño de código

 

Murciélagos: genoma también reducido

 

ADN+ARN: 5% del peso de un mamífero

Image source: Zhang et al

🦠 Cuanto menos código

Una bacteria puede duplicarse cada 20 minutos

 

La replicación de ADN es el factor limitante

 

Cuanto menos código, más rápido

 

E. coli: ADN+ARN son el 23% del peso

🦠 Refactorizando

E. coli ocupa 1.1 MB

 

Refactorizada de 1.1 MB a 1.066 MB

 

Sólo encontramos un 3% "superfluo"

 

M. tuberculosis tiene 1.1 MB → M. leprae 0.825 MB

 

Ha perdido un 25% de genes por adaptación

👯 Eliminación de duplicados: 5/10

📦 Modularidad

Diseño top-down

 

Interfaces definidas

 

Componentes nítidos

📦 El cuerpo humano

Sistemas enlazados

 

Múltiples funciones

 

Falta de interfaces

 

Toca aquí, se rompe allí

📦 Modularidad: 3/10

☔ Resiliencia

Tests + gestión de errores

♀️♂️ Sexo

Image source: Carla Isabel Ribeiro

🧶 Corrección de errores

Un error cada muchos miles de millones de bases

 

Cada persona tiene unas 100 mutaciones nuevas

 

Hay genes sin apenas mutaciones: histone H3 y H4

Image source: Bert Hubert

🐁🪰 Genes conservados

 

Hay genes que funcionan casi igual en el ratón y la mosca

 

Separados por cientos de millones de años

Image source: Bert Hubert

Monitorización activa

Image source: NIAID

🔌 Compatibilidad hacia atrás

Algunas cifras

PlayStation: ~ 15 años

 

Microsoft Windows: 20+ años

 

Conflicto de versiones:

version starts with "Windows 9"

Image source: crazy geniuses

Más cifras

ADN: 4000 millones de años

(como mínimo)

Image source: Wikipedia

🔌 Compatibilidad hacia atrás: 10/10

✅ Puntuación final: 6/10

🧹 Limpieza de código: 1/10

 

👯 Eliminación de duplicados: 5/10

 

📦 Modularidad: 3/10

 

☔ Resiliencia: 7/10

 

🔌 Compatibilidad hacia atrás: 10/10

🎓 Lecciones

Si algo funciona, haz muchas copias

Proceso paralelo masivo

Acabemos con el paradigma de von Neumann

 

Paralelizar operaciones es el camino

 

Las tarjetas gráficas tienen miles de procesos en paralelo

 

Por eso se usan en AI

 

Vayamos a millones de procesos en paralelo

Optimización multivariable

Evita máximos locales

Ecosistemas

Cooperación vs competencia

 

Subir la exigencia

Image source: Gary

🙏 ¡Gracias!

Cristina Pacios, doctora en biología molecular


Azahara Fernández, doctora en inmunología


Carlos Santisteban, profesor


Rutger Diederix, ingeniero de QA


Mario Montes, ingeniero de software


Bert Hubert, empresario y desarrollador


María Gómez Romero, biotecnóloga


🙏 ¿Preguntas?