Hat DNA das Äquivalent von IF-Anweisungen, WHILE-Schleifen oder Funktionsaufrufen? Wie wäre es mit GOTO?

Hat DNA so etwas wie IF-Anweisungen, GOTO-Sprünge oder WHILE-Schleifen?

In der Softwareentwicklung haben diese Konstrukte folgende Funktionen:

  • IF-Anweisungen: Eine IF-Anweisung führt den Code in einem nachfolgenden Codeblock aus, wenn eine bestimmte Bedingung erfüllt ist.
  • WHILE-Schleifen: Der Code in einem nachfolgenden Codeblock wird so oft wie angegeben ausgeführt oder solange eine bestimmte Bedingung erfüllt ist.
  • Funktionsaufrufe: Der Code umgeht vorübergehend den nachfolgenden Codeblock und führt stattdessen einen anderen Codeblock aus. Nach der Ausführung des anderen Codeblocks kehrt der Code zurück (manchmal mit einem gewissen Wert) und setzt die Ausführung des nachfolgenden Blocks fort.
  • GOTO-Anweisungen: Der Code umgeht den nachfolgenden Codeblock und springt stattdessen direkt zu einem anderen Block.

Sind ähnliche Konstrukte in der DNA vorhanden? Wenn ja, wie werden sie umgesetzt und wie heißen sie?

while(telomeres>0){DNA.replicate;cell.divide;telomeres-=1;sleep(x);}
Ein Funktionsaufruf ist nur eine ausgefallene GOTOAnweisung.
Für mich ist GOTO nur für die sequenzielle Codeausführung sinnvoll, und dies ist für DNA nicht der Fall (viele Transkriptionen finden ständig parallel statt).
@fileunderwater Die serielle Ausführung erfolgt während Signalisierungskaskaden
@MichaelKjörling Ein Funktionsaufruf erfordert, dass es eine separate Umgebung für die Funktion gibt. Es kann Argumente als Eingaben annehmen und einige Ausgaben zurückgeben. GOTOauf der anderen Seite ist der Teil des Hauptprogramms und steuert nur den Befehlsfluss. Während der Informationsfluss in biologischen Systemen kontrolliert werden kann, ist es fast unmöglich, eine separate Umgebung bereitzustellen, die für echte Funktionen erforderlich ist.
@WYSIWYG ja, aber ist dies nicht eher ein Fall von positivem Feedback (oder Aktivierung / Hemmung) ähnlich wie bei IF-Anweisungen und nicht von GOTO, wie beim Ausführen-Umgehen-Ausführen. Nur meine Wahrnehmung, aber ich weiß nicht genug über die Besonderheiten der DNA-Transkription, um es wirklich sagen zu können. Zeigt vielleicht, wie schwierig es sein kann, klare Programmier-DNA-Analoga zu zeichnen.
@fileunderwater Es gibt Programmieralternativen zu GOTO. In den meisten Sprachen ist es veraltet. Die Aktion von GOTOkann also von anderen Anweisungen ausgeführt werden. Sie haben also Recht. Darüber hinaus GOTOerfordert Etiketten; Auch wenn man sich einen Promotor für einen bestimmten TF als Label vorstellen kann, ist er doch eher eine logische Bedingung, die es zu erfüllen gilt. Wichtiger als eigentliche Aussagen ist also die zugrunde liegende Logik.
Ich denke, mit DNA sind wir Bits und Bytes selbst oder vielleicht Maschinencode näher als einer Programmiersprache.
@WYSIWYG True, obwohl die meisten Ablaufsteuerungsanweisungen in eine Maschinenanweisung ähnlich wie GOTO übersetzt werden, z. B. ein Sprung oder ein bedingter Sprung.
@skymninge Auch auf der Ebene von Bits und Bytes fungiert die Hardware selbst als eine Art Turing-Maschine.
Es ist wichtig zu verstehen, dass Ihr Computer keine Schleifen und Funktionsaufrufe hat. Es hat Vergleiche und Sprünge.
DNA ist kein Programm in dem Sinne, wie Sie denken. Ich nehme an, es könnte jedoch mit dem richtigen Interpreter als deklaratives Programm betrachtet werden?
Ich bin mir ziemlich sicher, dass DNA eher wie generische Daten ist als ein vollwertiges ausführbares Programm. Es ist die Datendatei, die das Bio-Programm verwendet
Ich denke, DNA ist eher wie eine HTML-Seite: Es ist nur eine Deklaration, welche Elemente auf einer Seite sichtbar sein könntendisplay:none (obwohl es in DNA durchaus erlaubt ist); Diese Elemente können das Protein Javascript enthalten. Hier und da ist eine rudimentäre Form von PHP vorhanden (siehe Antwort von @WYSIWYG).
Dies ist ein wahrscheinlich relevanter Artikel, den meiner Meinung nach noch niemand erwähnt hat.
@WYSIWYG Ich würde argumentieren, dass die Aktivierung von Kernrezeptoren einen Funktionsaufruf darstellen kann. Sie hängen im Zytosol, bis sie durch die Bindung ihres Liganden aktiviert werden, und wandern dann zum Kern, um ihre Funktion zu erfüllen.
Auf diese Weise Genetik und Molekularbiologie lernen; kann mir jemand ein paar bücher empfehlen oder zumindest welchen studienbereich ich suchen muss?

Antworten (7)

Biologische Beispiele ähnlich Programmieranweisungen:

  • IF: Transkriptionsaktivator; wenn vorhanden, wird ein Gen transkribiert. Im Allgemeinen gibt es keine Beendigung von Ereignissen, es sei denn, das Signal ist weg; das Programm endet erst mit dem Tod der Zelle. Die IFAnweisung ist also immer Teil einer Schleife.
  • WHILE: Transkriptionsrepressor; Das Gen wird transkribiert, bis der Repressor nicht mehr vorhanden ist.
  • Es gibt keine Entsprechungen von functionAnrufen. Alle Ereignisse finden im selben Raum statt und es besteht immer die Wahrscheinlichkeit von Interferenzen. Man kann argumentieren, dass Organellen als Kompartiment fungieren können, das functionähnliche Eigenschaften haben kann, aber sie sind hochkomplex und nicht nur eine Art Input-Output-Geräte.
  • GOTOist immer abhängig von einer Bedingung. Dies kann bei bestimmten Netzwerkverbindungen wie Feedforward-Schleifen und verzweigten Pfaden passieren. Wenn es zum Beispiel einen Signalweg wie diesen gibt:
    A → B → C und es gibt eine andere Verbindung D → C , dann wird, wenn irgendwie D aktiviert wird, dies direkt C beeinflussen , wodurch A und B entbehrlich werden.

Logikgatter wurden unter Verwendung synthetischer biologischer Schaltkreise konstruiert. Weitere Informationen finden Sie in dieser Bewertung.


Notiz

Molekularbiologische Prozesse lassen sich nicht direkt mit einem Computercode vergleichen. Es ist die zugrunde liegende Logik, die wichtig ist, und nicht das Aussagekonstrukt selbst, und diese Beispiele sollten nicht als absolute Analogien angesehen werden. Es ist auch anzumerken, dass DNA nur eine Reihe von Anweisungen und nicht wirklich eine voll funktionsfähige Einheit ist (sie ist bis zu einem gewissen Grad funktionsfähig). Obwohl es sich jedoch nur um einen Code handelt, ist es vergleichbar mit einem HLL-Code, der kompiliert werden muss, um seine Funktionen auszuführen. Siehe auch diesen Beitrag.

Es ist auch wichtig zu beachten, dass die Zelle, wie viele andere physikalische Systeme, analoger Natur ist. Daher gibt es in den meisten Situationen keinen 0/1 (binären) Wert von Variablen. Betrachten Sie die Genexpression. Wenn ein Transkriptionsaktivator vorhanden ist, wird das Gen transkribiert. Wenn Sie jedoch die Konzentration des Aktivators weiter erhöhen, wird die Expression dieses Gens zunehmen, bis es einen Sättigungspunkt erreicht. Hier gibt es also keine digitale Logik. Allerdings möchte ich hinzufügen, dass Schaltverhalten in biologischen Systemen möglich ist (inklusive Genexpression) und auch in vielen Fällen genutzt wird. Bestimmte regulatorische Netzwerkstrukturen können solche Dynamiken hervorrufen. Kooperation mit oder ohne positives Feedback ist einer der Mechanismen, die Schaltverhalten implementieren können. Weitere Einzelheiten finden Sie unterUltrasensibilität . Sehen Sie sich auch „ Kann die Molekulargenetik aus einer kontinuierlichen Variablen eine boolesche Variable machen? “ an.

Ich würde das Spleißen von Introns als eine Art GOTO klassifizieren, da es den Ribosomen-„Zeiger“ im Wesentlichen auf einen anderen Wert überspringt.
Sehr schön! Wo würden alternative Leserahmen hineinpassen?
@MarchHo Ja, das kann man auch als Beispiel betrachten. Viele Analogien lassen sich ziehen. Spinale Reflexe können ein Beispiel dafür seinBREAK
@CRags Ich denke, alternative Leserahmen können ein Beispiel für sein SWITCH-CASE. Es hängt alles ab. Die logische Verknüpfung ist hier relevanter als Programmanweisungen. Schließlich beruhen diese Aussagen auf logischen Tests.
Obwohl Ihre Beispiele klug sind, halte ich die hier verwendete Analogie (DNA gegen Computercode) für so schlecht, dass sie irreführend ist.
@JackAidley Es stimmt, dass die Molekularbiologie nicht direkt mit einem Computercode verglichen werden kann. Ich habe diese Antwort für jemanden gedacht, der neugierig ist, ob eine Zelle Berechnungen wie ein Computerprogramm durchführen kann. Ich habe bereits erwähnt, dass es auf die zugrunde liegende Logik ankommt und nicht auf das Aussagekonstrukt selbst und diese Beispiele nicht als absolute Analogien zu verstehen sind. Ich werde dies in der Antwort hinzufügen, um Verwirrung zu vermeiden.
Und @JackAidley Ich habe nirgendwo erwähnt, dass die DNA alle Funktionen ausführt. Ein TF ist ein Protein. So komplex es auch sein mag, die Eigenschaft des Systems kann basierend auf dem DNA-Code vorhersagbar sein.
Ich denke wirklich, dass Kompartimentierungen, wie sie von Zellmembranen erreicht werden, mit Funktionen verglichen werden können. Dies ist eine beeindruckende Antwort @WYSIWYG
WYSIWYG, es ist gut, dass Sie nicht erwähnt haben, dass DNA alle von Ihnen beschriebenen Funktionen ausführt, aber Sie sollten wirklich in Betracht ziehen, in Ihrer Antwort explizit zu erwähnen, dass DNA sie nicht ausführt und nicht ausführen kann. Die Tatsache, dass Computercode solche Kontrollstrukturen beschreibt, ist wirklich ein ziemlich grundlegender Aspekt der Turing-Vollständigkeit, und es ist im Zusammenhang mit dieser Frage sehr wichtig zu beachten, dass DNA dieses Merkmal nicht teilt.
@KyleStrand IMO übernimmt weder DNA die Funktion noch der HLL-Code. Beide geben nur Anweisungen; DNA ist viel kryptischer. Nur weil eine Turing-Maschine nicht mit dem DNA-Code entwickelt wurde, heißt das nicht, dass es theoretisch unmöglich ist. Dies ist nur meine Meinung. Es gibt mehrere Unterschiede zwischen DNA und Computercode. Das Ziel dieser Antwort war nur, auf einige rudimentäre Ähnlichkeiten hinzuweisen. Ich habe deinen Vorschlag aber ergänzt.
@WYSIWYG Danke. Ich denke, was ich mit "Ausführen aller Funktionen" gemeint habe, ist eher, dass HLLs (und LLLs) den tatsächlichen Prozess für ihre Ausführung vorschreiben - wo Sprünge auftreten usw. - auch wenn sie diesen Prozess nicht selbst ausführen . Soweit wir wissen, tut dies die DNA nicht (obwohl sie zugegebenermaßen viel mehr von dieser Art von Dingen tun könnte, als wir glauben). Ich denke analog, wenn DNA wie eine Blaupause ist, ist Code so etwas wie eine Blaupause, kombiniert mit Arbeitsanweisungen für die Leute, die das durch die Blaupause beschriebene Ding tatsächlich bauen.
"Organellen" scheint wie ein Interrupt-Handler oder vielleicht ein Ereignis zu sein. Ich denke, eine auf Ereignissen basierende Sprache ist möglicherweise ein besserer Vergleich für das logische Verständnis.
Um eine Berechnung zu erzeugen, brauchen Sie nur einen bedingten Sprung (dh wenn X nach P geht). Alle anderen Steueranweisungen dienen nur der Bequemlichkeit und können durch einen bedingten Sprung simuliert werden. Ein Computersystem, das nur einen bedingten Sprung zur Kontrolle hat, ist Turing Complete.
@lesto-Organellen sind wie Unterprogramme, die kontinuierlich mit dem Hauptprogramm interagieren. Sie haben ihre eigene Umgebung und ein gewisses Maß an Autonomie, sind aber von der Zelle abhängig.
@LieRyan Einverstanden. Alles, was Sie im Grunde brauchen, sind Logikgatter.
Es gibt einige Hypothesen zu Chromatin-Mikroumgebungen, die analog zu Namensräumen in der Programmierung wären.
"Biologische Beispiele" - Aber die Frage spezifiziert DNA, also ist diese Antwort eindeutig falsch. Zeigt, dass Sie einigen Leuten nicht erlauben sollten, abzustimmen.
@David Ich stimme zu, dass diese Frage nicht großartig ist (und die Antwort auch), aber leider sind die am besten gestellten (und recherchierten) Fragen oft nicht so beliebt. Wie auch immer, was sind Sie mit "biologischen Beispielen" nicht einverstanden? Damit meinte ich analoge Situationen in biologischen Systemen. Beachten Sie, dass OP DNA mit einem Computerprogramm vergleicht. Da DNA alle biologischen Informationen kodiert, ist DNA das Programm. Die meisten meiner Beispiele beziehen sich auf die Transkriptionsregulation, dh direkte Operationen von/auf DNA. Die Antwort ist also, obwohl sie nicht großartig ist, nicht falsch.
Es tut uns leid. Ich habe nicht bemerkt, dass du es warst. Ich möchte nicht in einen Flammenkrieg geraten. Nur, dass die Frage mir wie eine typische falsche Analogie eines Informatikers zwischen den expliziten Informationen im Code und denen in der DNA erscheint, die meine jüngste Antwort auf eine alte Frage provozierte. Die Informationen in der DNA sind nicht explizit und ich bezweifle, dass Sie jemals hoffen können, die Auswirkungen der Expression von Proteinen allein durch das Lesen der DNA zu verstehen.
Ich würde sagen, dass die chromosomale Regulation eine Art Funktionsaufruf ist (DNA ist 3D) DNA wird in einem Teil des Chromosoms aktiviert. Dies bewirkt dann stromabwärts irgendwann die Öffnung der chromosomalen Region für die Transkription stromabwärts der anfänglichen DNA-Aktivierung (Methylierung chromosomaler Regionen). Das ist ehrlich gesagt eine blöde Frage. Wir sind noch lange nicht in der Lage, ein ganzes System entweder in vitro oder in silico synthetisch zu modellieren. Viel zu viele bewegliche Teile, dass wir noch nicht einmal Interaktionsmodelle mit ganzen wichtigen Bereichen wie der Biophysik haben, die nicht einmal an Bedeutung teilhaben.

DNA ist nicht analog zu Computercode, was Ihre Suche nach ähnlichen Konstrukten darin bedeutungslos macht. Um ein paar einfache Beispiele zu nennen, warum das so ist:

  • Computercode hat eine sequentielle Ausführungsreihenfolge; DNA wirkt parallel und außerhalb der Reihenfolge, sie wird nicht "ausgeführt".

  • Computercode hat eine strenge und konsistente Bedeutung, sodass die Zeile if x==4 : x=7immer dasselbe tut. kodierende DNA wird in Aminosäuren übersetzt, und es sind die komplexen chemischen Wechselwirkungen zwischen diesen Säuren, die Proteinen ihre Funktion verleihen, sodass kein Stück kodierender DNA außerhalb seines Proteins verstanden werden kann.

Biologische Systeme haben einige Wege, die ähnlich wie Computer funktionieren, aber Sie sollten diese auf der Proteinebene suchen, nicht auf der DNA-Ebene, und selbst dann müssen Sie äußerst vorsichtig sein, dass Ihre Analogie Ihr Verständnis nicht beeinträchtigt was wirklich passiert.

Wenn Sie sagen, dass DNA Proteine ​​benötigt, um ihre Funktionen auszuführen, dann brauchen Computerprogramme auch Compiler, um ihren Code auszuführen. Letztendlich ist es die Maschinensprache, die dem Computer sagt, was er tun soll.
Ich sage nicht, dass DNA Proteine ​​benötigt, um ihre Funktionen auszuführen; Ich sage, DNA ist grundlegend anders als Computercode.
OK, aber es gibt massiv parallele Programmiersprachen, in denen jede Zeile gleichzeitig ausgeführt wird und nicht in der richtigen Reihenfolge sein kann. Und nur weil Zeilen kontextsensitiv sind, ist es keine Programmiersprache, es macht es nur viel komplexer. Das heißt, so wie ich DNA verstand, war es mehr Daten als Programm.
Selbst in parallelen Programmiersprachen wird jede Anweisung sequentiell ausgeführt. Es ist nur so, dass mehrere Ausführungsstränge gleichzeitig laufen. DNA ist weder Daten noch Programm. Die Analogie ist völlig ungenau.
Ich denke, DNA ist gleichzeitig Daten und Programm. Seine Ausdrucksregulatoren fungieren als logische Klauseln, daher ist die Analogie zumindest merkwürdig.

Es gibt sicherlich einige Vergleiche zwischen der Art und Weise, wie Gene aus DNA exprimiert werden, und logischen Funktionen, aber sie sind nicht großartig.

Aber die Synthetische Biologie ist wirklich ein blühendes neues Gebiet, das versucht, logische Funktionen in die Biologie zu integrieren, siehe zB Siuti et al (2013) .

Das obige Papier ist ein brillantes Beispiel für eine Gruppe, die Bakterien verwendet, um Informationen zu speichern und sich zu biologischen Schaltkreisen zusammenzusetzen, die dann zur Verarbeitung logischer Funktionen verwendet werden können. Es wird also gemacht, aber nicht genau so, wie Sie es vorschlagen.

Nur um die vorherigen Antworten zu ergänzen, aber transkriptionelle Interferenz (siehe z . B. Shearwin et al., 2005 ) kann als eine Form der IF-Anweisung (oder WHILE) in dem Sinne angesehen werden, dass:

if(x transcribed){not y transcribed}

Die Interferenz muss jedoch nicht binär sein, und häufiger sind abgestufte Reaktionen. Eine transkriptionelle Interferenz kann auch auf der RNA-Stufe stattfinden (siehe z. B. Xue et al, 2014 ), indem Antisense-RNA verwendet wird und häufig eine negative Rückkopplungsschleife bereitgestellt wird, aber die Interferenz wird dann von der DNA entfernt und stellt keine direkte IF-Aussage dar analog auf der DNA-Stufe.

Für mich ist GOTO hauptsächlich für die sequenzielle Codeausführung sinnvoll, und dies ist für DNA nicht der Fall (viele Transkriptionen finden ständig parallel statt). Allgemeiner bedeutet die parallele "Ausführung" von DNA zusammen mit den kontinuierlichen Wechselwirkungen und Rückkopplungsschleifen zwischen DNA, Transkripten und Proteinen (unter anderem), dass zelluläre Prozesse weitaus weniger eindeutig und nachvollziehbar sind als Computercode, was bedeutet, dass Computer Code ist eine sehr schlechte Metapher für zelluläre Prozesse und das Funktionieren der DNA.

Ich denke, die intrinsische Parallelität ist ein entscheidender Punkt. Biologische „Verarbeitung“ ist in Wirklichkeit eher analog als digital, da sogar diskretes Neuronenfeuern eine Kodierung analoger Prozesse im Neuron ist. Die Prozesse einer Zelle lassen sich viel besser als ein entsetzlich (glorreich?) Komplexes Set von überlappenden, kreuzverdrahteten analogen Rückkopplungsschleifen annähern. Die Genexpression macht einen Teil davon aus, obwohl sie eng mit vielen anderen zellulären Prozessen verbunden ist.
@DanBryant Tolle Beschreibung und einverstanden - ich habe versucht, diesen Punkt weiter zu verdeutlichen.

Wie WYSIWYG sagte, gibt es kein Äquivalent für Funktionsaufrufe, da es immer zu Interferenzen kommen wird. Man könnte jedoch argumentieren, dass einige modulare Signalwege (z. B. Apoptose-Signalisierung) als "Codeblock" angesehen werden können, bei dem eine bestimmte Eingabe (fast) sicher zu einer bestimmten Wirkung führt. Die Analogie zu Funktionsaufrufen besteht darin, dass es bei der Beschreibung vieler verschiedener Mechanismen zu kürzerem und effizienterem "Code" führt, um alles zwischen z. Caspase-Aktivierung und Cytochrom-Leakage als ein Block. Auch die Markierung eines Proteins mit Ubiquitin kann als Funktionsaufruf für den Abbau angesehen werden.

Wenn Sie an den Bausteinen für die Programmierung mit Biologie interessiert sind, schauen Sie sich das Programm biobricks.org an, das darauf abzielt, modulare Teile (Bausteine) zu definieren, die Sensoren, Logikfunktionen, Effektoren usw. sein können.

Es gibt auch Störungen bei Funktionsaufrufen: Sie heißen globale Variablen, Systemkonfiguration, Hardwareunterstützung usw.

Bezüglich Funktionsaufrufen:

Es gibt keine Äquivalente von Funktionsaufrufen. Alle Ereignisse finden im selben Raum statt und es besteht immer die Wahrscheinlichkeit von Interferenzen. Man kann argumentieren, dass Organellen als Kompartiment fungieren können, das eine Funktion wie Eigenschaften haben kann, aber sie sind hochkomplex und nicht nur eine Art Input-Output-Geräte.

und

Wie WYSIWYG sagte, gibt es kein Äquivalent für Funktionsaufrufe, da es immer zu Interferenzen kommen wird.

Ich denke, dass Kernrezeptoren großartige Beispiele für Funktionsaufrufe sind. Sie hängen im Cytosol herum und ermöglichen so, dass die normale Programmierung auf normative Weise funktioniert. Nach der Aktivierung mit ihrem Liganden verlagern sie sich in den Zellkern, um Subroutinen der Genrepression/-aktivierung und nachfolgende Downstream-Prozesse zu aktivieren.

Auf diese Weise könnte man sogar argumentieren, dass die meisten anfänglichen Ligandenwechselwirkungen, die die zelluläre Signalgebung auslösen, Funktionsaufrufe sind.

Neben der hervorragenden WYSIWYG-Antwort gibt es auf der unteren Ebene einige programmierähnliche Konstrukte:

  • FUNCTION CALL – Ersetzen einer einzelnen Untereinheit innerhalb eines komplexen Proteins, zusammengesetzt aus mehreren Untereinheiten, die jeweils von separaten Genen kodiert werden. Dies kann auch als COMPOSITION angesehen werden, ein weiteres Programmierkonzept.
  • IF - alternatives Spleißen, ein DNA-Stück (Exon) kann in das Transkript aufgenommen oder nicht aufgenommen werden, das das endgültige Protein codiert.
Ich habe die Bearbeitung zurückgesetzt, die Teile dieser Antwort, die kein Code sind, mit Ticks versehen hat. Hier sind FUNCTION CALL, COMPOSITION und IF kein Code, sondern Programmierkonzepte