¿Tiene el ADN el equivalente de declaraciones IF, bucles WHILE o llamadas a funciones? ¿Qué tal GOTO?

¿Tiene el ADN algo como declaraciones IF, saltos GOTO o bucles WHILE?

En el desarrollo de software, estas construcciones tienen las siguientes funciones:

  • Sentencias IF : una sentencia IF ejecuta el código en un bloque de código posterior si se cumple alguna condición específica.
  • Bucles WHILE: el código en un bloque de código subsiguiente se ejecuta tantas veces como se especifique, o siempre que se cumpla una condición específica.
  • Llamadas de función: el código pasa por alto temporalmente el bloque de código subsiguiente, ejecutando en su lugar algún otro bloque de código. Después de la ejecución del otro bloque de código, el código regresa (a veces con algún valor) y continúa con la ejecución del bloque subsiguiente.
  • Sentencias GOTO: El código pasa por alto el bloque de código subsiguiente, saltando directamente a algún otro bloque.

¿Hay construcciones similares a estas presentes en el ADN? En caso afirmativo, ¿cómo se implementan y cómo se llaman?

while(telómeros>0){DNA.replicate;cell.divide;telomeres-=1;sleep(x);}
Una llamada de función es solo una declaración elegante GOTO.
Para mí, GOTO solo tiene sentido para la ejecución de código secuencial, y este no es el caso para el ADN (muchas transcripciones ocurren todo el tiempo en paralelo).
@fileunderwater La ejecución en serie ocurre durante las cascadas de señalización
@MichaelKjörling Una llamada de función requiere que haya un entorno separado para la función. Puede tomar argumentos como entradas y devolver alguna salida. GOTOpor otro lado es la parte del programa principal y solo controla el flujo de instrucciones. Si bien el flujo de información en el sistema biológico se puede controlar, es casi imposible proporcionar un entorno separado necesario para las funciones reales.
@WYSIWYG sí, pero ¿no es más un caso de retroalimentación positiva (o activación/inhibición) similar a las declaraciones IF, y no GOTO, como en ejecutar-pasar por alto-ejecutar? Solo mi percepción, pero no sé lo suficiente sobre los detalles de la transcripción del ADN para decirlo realmente. Sin embargo, tal vez muestra lo difícil que puede ser dibujar análogos claros de programación-ADN.
@fileunderwater Hay alternativas de programación a GOTO. En la mayoría de los idiomas está en desuso. Entonces la acción de GOTOpuede ser realizada por otras declaraciones. Así que tienes razón. Además, GOTOrequiere etiquetas; aunque un promotor de un TF determinado puede considerarse como una etiqueta, es más una condición lógica que debe cumplirse. Entonces, más importante que las declaraciones reales es la lógica subyacente.
Creo que con el ADN estamos más cerca de los bits y bytes en sí mismos o tal vez del código de máquina que de un lenguaje de programación.
@WYSIWYG Cierto, aunque la mayoría de las declaraciones de flujo de control se traducen en una instrucción de máquina similar a GOTO, como un salto o un salto condicional.
@skymninge Incluso a nivel de bits y bytes, el propio hardware actúa como una especie de máquina de Turing.
Es crucial comprender que su computadora no tiene bucles ni llamadas a funciones. Tiene comparaciones y saltos.
El ADN no es un programa en el sentido que estás pensando. Sin embargo, supongo que podría considerarse un programa declarativo con el intérprete adecuado.
Estoy bastante seguro de que el ADN se parece más a datos genéricos que a un programa ejecutable completo. Es el archivo de datos que utiliza el bioprograma.
Creo que el ADN es más como una página HTML: es solo una declaración de qué elementos podrían ser visibles en una página (aunque display:noneestá perfectamente permitido en el ADN); estos elementos pueden incluir la proteína Javascript. Aquí y allá está presente una forma rudimentaria de PHP (ver la respuesta de @WYSIWYG).
Este es un artículo probablemente relevante que creo que nadie mencionó todavía.
@WYSIWYG Yo diría que la activación del receptor nuclear puede representar una llamada de función. Se quedan en el citosol hasta que se activan mediante la unión de su ligando y luego se trasladan al núcleo para realizar su función.
Para aprender genética y biología molecular de esta manera; ¿alguien podría recomendarme algunos libros, o al menos qué área de estudio debo buscar?

Respuestas (7)

Ejemplos biológicos similares a declaraciones de programación:

  • IF: activador transcripcional; cuando esté presente, se transcribirá un gen. En general, no hay terminación de eventos a menos que la señal se haya ido; el programa termina solo con la muerte de la célula. Entonces, la IFdeclaración siempre es parte de un bucle.
  • WHILE: represor transcripcional; el gen se transcribirá hasta que el represor no esté presente.
  • No hay equivalentes de functionllamadas. Todos los eventos suceden en el mismo espacio y siempre existe la posibilidad de interferencia. Se puede argumentar que los orgánulos pueden actuar como un compartimento que puede tener functionpropiedades similares, pero son muy complejos y no son solo algún tipo de dispositivo de entrada y salida.
  • GOTOsiempre depende de una condición. Esto puede suceder en el caso de ciertas conexiones de red, como bucles de avance y rutas ramificadas. Por ejemplo, si hay una vía de señalización como esta:
    A → B → C y hay otra conexión D → C , entonces si de alguna manera se activa D , afectará directamente a C , haciendo que A y B sean prescindibles.

Las puertas lógicas se han construido utilizando circuitos biológicos sintéticos. Consulte esta revisión para obtener más información.


Nota

Los procesos biológicos moleculares no se pueden comparar directamente con un código de computadora. Es la lógica subyacente lo que es importante y no la declaración en sí misma y estos ejemplos no deben tomarse como analogías absolutas. También se debe tener en cuenta que el ADN es solo un conjunto de instrucciones y no es realmente una entidad completamente funcional (es funcional hasta cierto punto). Sin embargo, aun siendo solo un código, es comparable a un código HLL que debe compilarse para ejecutar sus funciones. Vea esta publicación también.

También es importante señalar que la célula, como muchos otros sistemas físicos, es de naturaleza analógica. Por lo tanto, en la mayoría de las situaciones no hay un valor 0/1 (binario) de variables. Considere la expresión génica. Si está presente un activador transcripcional, el gen se transcribirá. Sin embargo, si sigue aumentando la concentración del activador, la expresión de ese gen aumentará hasta llegar a un punto de saturación. Así que no hay lógica digital aquí. Habiendo dicho eso, agregaría que el cambio de comportamiento es posible en los sistemas biológicos (incluida la expresión génica) y también se usa en muchos casos. Ciertos tipos de estructuras de redes regulatorias pueden dar lugar a tales dinámicas. La cooperatividad con o sin retroalimentación positiva es uno de los mecanismos que pueden implementar el comportamiento de cambio. Para más detalles, lea sobreultrasensibilidad _ Consulte también " ¿Puede la genética molecular hacer una variable booleana a partir de una variable continua? "

Clasificaría el empalme de intrones como una especie de GOTO, ya que esencialmente salta el "puntero" del ribosoma a un valor diferente.
¡Muy agradable! ¿Dónde encajarían los marcos de lectura alternativos?
@MarchHo Sí, eso también puede considerarse un ejemplo. Se pueden trazar muchas analogías. Los reflejos espinales pueden ser un ejemplo deBREAK
@CRags Supongo que los marcos de lectura alternativos pueden ser un ejemplo de SWITCH-CASE. Todo depende. La activación lógica tiene más relevancia aquí que las sentencias del programa. Después de que todas estas declaraciones se basan en pruebas lógicas.
Si bien sus ejemplos son inteligentes, creo que la analogía utilizada aquí (ADN contra código de computadora) es tan pobre que puede ser engañosa.
@JackAidley Es cierto que la biología molecular no se puede comparar directamente con un código de computadora. Pensé esta respuesta para alguien que siente curiosidad por saber si una célula puede realizar cálculos como un programa de computadora. Ya mencioné que lo importante es la lógica subyacente y no la construcción de la declaración en sí misma, y ​​estos ejemplos no deben tomarse como analogías absolutas. Agregaré esto en la respuesta para evitar confusiones.
Y @JackAidley en ninguna parte mencioné que el ADN está realizando todas las funciones. Un TF es una proteína. Por complejo que sea, la propiedad del sistema puede ser predecible en base al código de ADN.
Realmente creo que las compartimentaciones realizadas por las membranas celulares podrían compararse con funciones. Esta es una respuesta impresionante @WYSIWYG
WYSIWYG, es bueno que no haya mencionado que el ADN realiza todas las funciones que describe, pero realmente debería considerar mencionar explícitamente en su respuesta que el ADN no las realiza ni puede realizarlas; el hecho de que el código de computadora describa tales estructuras de control es realmente un aspecto bastante fundamental de la integridad de Turing, y es muy importante en el contexto de esta pregunta tener en cuenta que el ADN no comparte esa característica.
@KyleStrand IMO ni el ADN hace la función ni el código HLL. Ambos solo dan instrucciones; El ADN es mucho más críptico. El hecho de que no se haya desarrollado una máquina de Turing utilizando el código de ADN no significa que sea teóricamente imposible. Esta es sólo mi opinión. Hay varias diferencias entre el ADN y el código informático. El objetivo de esta respuesta fue solo señalar algunas similitudes rudimentarias. Sin embargo, he agregado tu sugerencia.
@WYSIWYG Gracias. Supongo que lo que quise decir acerca de "realizar todas las funciones" es más que los HLL (y los LLL) prescriben el proceso real para ejecutarlos, donde ocurren los saltos, etc., incluso si en realidad no realizan ese proceso ellos mismos. El ADN, hasta donde sabemos, no lo hace (aunque es cierto que podría hacer mucho más de este tipo de cosas de lo que nos damos cuenta). Supongo que, por analogía, si el ADN es como un plano, el código es algo así como un plano combinado con instrucciones de trabajo para las personas que realmente construyen lo que describe el plano.
"orgánulos" parece ser como un controlador de interrupción, o tal vez eventos. Creo que un lenguaje basado en eventos puede ser una mejor comparación para las comprensiones lógicas.
Para producir cálculos, todo lo que necesita es un salto condicional (es decir, si X pasa a P). Todas las demás declaraciones de control son solo por conveniencia y se pueden simular mediante salto condicional. Un sistema computacional que solo tiene un salto condicional para el control es Turing Complete.
Los orgánulos @lesto son como subprogramas que interactúan continuamente con el programa principal. Tienen su propio entorno y cierto nivel de autonomía, pero dependen de la célula.
@LieRyan De acuerdo. Básicamente, todo lo que necesitas son puertas lógicas.
Hay algunas hipótesis con respecto a los microentornos de cromatina que serían análogas a los espacios de nombres en la programación.
"Ejemplos biológicos": pero la pregunta especifica el ADN, por lo que claramente esta respuesta es incorrecta. Muestra que no deberías permitir que algunas personas voten.
@David Estoy de acuerdo en que esta pregunta no es excelente (y la respuesta también), pero desafortunadamente las preguntas mejor planteadas (e investigadas) a menudo no son tan populares. De todos modos, ¿en qué no estás de acuerdo con los "ejemplos biológicos"? Con ese término me refería a situaciones análogas en sistemas biológicos. Tenga en cuenta que OP está comparando el ADN con un programa de computadora. Dado que el ADN codifica toda la información biológica, el ADN es el programa. La mayoría de mis ejemplos están relacionados con la regulación transcripcional, es decir, operaciones directas de/sobre el ADN. Entonces, la respuesta, aunque no es genial, no está mal.
Lo siento. No me di cuenta de que eras tú. No quiero entrar en una guerra de llamas. Solo que la pregunta me parece una falsa analogía típica de un informático entre la información explícita en el código y en el ADN, lo que provocó mi reciente respuesta a una vieja pregunta. La información en el ADN no es explícita y dudo que alguna vez pueda esperar comprender los efectos de la expresión de proteínas a partir de la lectura del ADN solo.
Diría que la regulación cromosómica es una especie de llamada de función (el ADN es 3D) El ADN se activa en una parte del cromosoma. Luego, aguas abajo, en algún punto, esto efectúa la apertura de la región cromosómica para la transcripción aguas abajo de la activación inicial del ADN (metilación de las regiones cromosómicas). Esta es una especie de pregunta estúpida honestamente. No estamos ni cerca de poder modelar sintéticamente un sistema completo, ya sea in vitro o in silico. Demasiadas piezas en movimiento que aún no tenemos modelos de interacción con campos importantes completos como la biofísica que ni siquiera comparten la importancia.

El ADN no es análogo al código de computadora, lo que hace que su búsqueda de construcciones similares en él no tenga sentido. Para dar un par de ejemplos simples de por qué esto es:

  • El código de computadora tiene un orden secuencial de ejecución; El ADN actúa en paralelo y fuera de secuencia, no se "ejecuta".

  • El código de computadora tiene un significado estricto y consistente, por lo que la línea if x==4 : x=7siempre hace lo mismo; El ADN codificante se traduce en aminoácidos y son las interacciones químicas complejas entre estos ácidos las que dan a las proteínas su función, por lo que ninguna parte del ADN codificante puede entenderse fuera de su proteína.

Los sistemas biológicos tienen algunas vías que funcionan de manera similar a las computadoras, pero debe buscarlas a nivel de proteína, no a nivel de ADN e, incluso entonces, debe tener mucho cuidado de que su analogía no perjudique su comprensión de lo que realmente está pasando.

Cuando dice que el ADN necesita proteínas para ejecutar sus funciones, los programas de computadora también necesitan compiladores para ejecutar su código. En última instancia, es el lenguaje de máquina el que le dice a la computadora qué hacer.
No digo que el ADN necesite proteínas para ejecutar sus funciones; Estoy diciendo que el ADN es fundamentalmente diferente al código de computadora.
Está bien, pero existen lenguajes de programación masivamente paralelos donde cada línea se ejecuta al mismo tiempo y puede estar fuera de secuencia. Y el hecho de que las líneas sean sensibles al contexto no significa que no sea un lenguaje de programación, simplemente lo hace mucho más complejo. Dicho esto, la forma en que entendí el ADN fue más datos que programas.
Incluso en lenguajes de programación paralelos, cada declaración se ejecuta secuencialmente. Es solo que hay múltiples "hilos" de ejecución al mismo tiempo. El ADN no es ni datos ni programa. La analogía es totalmente inexacta.
Creo que el ADN es datos y programa al mismo tiempo. Sus reguladores de expresión actúan como cláusulas lógicas, por lo que la analogía es cuanto menos curiosa.

Ciertamente, se pueden hacer algunas comparaciones entre la forma en que los genes se expresan a partir del ADN y las funciones lógicas, pero no son muy buenas.

Pero la biología sintética es realmente un nuevo campo floreciente que intenta integrar funciones lógicas en la biología, véase, por ejemplo, Siuti et al (2013) .

El documento anterior es un ejemplo brillante de un grupo que usa bacterias para almacenar información y ensamblarlas en circuitos biológicos que luego pueden usarse para procesar funciones lógicas. Así que se está haciendo pero no exactamente de la manera que propones.

Solo para agregar a las respuestas anteriores, pero la interferencia transcripcional (ver, por ejemplo , Shearwin et al., 2005 ) puede verse como una forma de declaración IF (o MIENTRAS) en el sentido de que:

if(x transcribed){not y transcribed}

Sin embargo, la interferencia no tiene que ser binaria, y las más comunes son las respuestas graduadas. La interferencia transcripcional también puede tener lugar en la etapa de ARN (ver, por ejemplo , Xue et al, 2014 ), utilizando ARN antisentido y, a menudo, proporcionando un ciclo de retroalimentación negativa, pero la interferencia luego se elimina del ADN y no representa una declaración IF directa. análogo en la etapa de ADN.

Para mí, GOTO tiene sentido principalmente para la ejecución de código secuencial, y este no es el caso para el ADN (muchas transcripciones ocurren todo el tiempo en paralelo). En términos más generales, la "ejecución" paralela del ADN junto con las interacciones continuas y los bucles de retroalimentación entre el ADN, las transcripciones y las proteínas (entre otras cosas) también significa que los procesos celulares son mucho menos claros y rastreables que el código informático, lo que significa que la computadora El código es una metáfora muy pobre de los procesos celulares y el funcionamiento del ADN.

Creo que el paralelismo intrínseco es un punto clave. El 'procesamiento' biológico es realmente más analógico que digital, ya que incluso la activación de neuronas discretas es una codificación de procesos analógicos en la neurona. Los procesos de una célula se aproximan mucho mejor como un conjunto terriblemente (¿gloriosamente?) complejo de bucles de retroalimentación analógicos superpuestos y cruzados. La expresión génica forma parte de esto, aunque está íntimamente ligada a muchos otros procesos celulares.
@DanBryant Gran descripción y estoy de acuerdo: he tratado de aclarar más este punto.

Como dijo WYSIWYG, no hay un equivalente para las llamadas a funciones, ya que siempre habrá alguna interferencia. Sin embargo, se podría argumentar que algunas vías modulares (por ejemplo, la señalización de la apoptosis) pueden verse como un "bloque de código" en el que una determinada entrada (casi) seguramente conducirá a un determinado efecto. La analogía con las llamadas a funciones es que, al describir muchos mecanismos diferentes, hace que el "código" sea más corto y más eficiente para considerar todo entre, por ejemplo. activación de caspasa y fuga de citocromo como un bloque. Además, marcar una proteína con ubiquitina puede verse como una llamada funcional para la degradación.

Si estás interesado en los bloques de construcción para programar con biología, consulta el programa biobricks.org, que tiene como objetivo definir piezas modulares (ladrillos) que pueden ser sensores, funciones lógicas, efectores,...

También hay interferencia en las llamadas a funciones: se llaman variables globales, configuración del sistema, soporte de hardware, etc.

Con respecto a las llamadas a funciones:

No hay equivalentes de llamadas a funciones. Todos los eventos suceden en el mismo espacio y siempre existe la posibilidad de interferencia. Se puede argumentar que los orgánulos pueden actuar como un compartimento que puede tener una función similar a las propiedades, pero son muy complejos y no son solo algún tipo de dispositivo de entrada y salida.

y

Como dijo WYSIWYG, no hay un equivalente para las llamadas a funciones, ya que siempre habrá alguna interferencia.

Creo que los receptores nucleares son excelentes ejemplos de llamados a funciones. Pasan el rato en el citosol permitiendo que la programación normal funcione de manera normativa. Tras la activación con su ligando, se translocan al núcleo para activar subrutinas de represión/activación de genes y procesos posteriores posteriores.

De esta manera, incluso se podría argumentar que la mayoría de las interacciones iniciales de ligandos que inician la señalización celular son llamadas de función.

Además de la excelente respuesta WYSIWYG, hay algunas construcciones similares a la programación en el nivel inferior:

  • LLAMADA DE FUNCIÓN: reemplazo de una sola subunidad dentro de una proteína compleja, ensamblada a partir de múltiples subunidades, cada una codificada por genes separados. Esto también puede verse como COMPOSICIÓN, otro concepto de programación.
  • SI - corte y empalme alternativo, se puede incluir o no incluir un trozo de ADN (exón) en el transcrito que codifica la proteína final.
Revertí la edición que volvió a poner tics en partes de esta respuesta que no son código. Aquí, LLAMADA DE FUNCIÓN, COMPOSICIÓN e IF no son código, son conceptos de programación