Question:
L'ADN a-t-il l'équivalent des instructions IF, des boucles WHILE ou des appels de fonction? Et pour GOTO?
coderworks
2015-03-04 09:10:40 UTC
view on stackexchange narkive permalink

DNA a-t-il quelque chose comme des instructions IF, des sauts GOTO ou des boucles WHILE?

Dans le développement logiciel, ces constructions ont les fonctions suivantes:

  • Instructions IF: Une instruction IF exécute le code dans un bloc de code suivant si une condition spécifique est remplie.
  • Boucles WHILE: Le code dans une Le bloc de code est exécuté autant de fois que spécifié, ou tant qu'une condition spécifique est remplie.
  • Appels de fonction: Le code contourne temporairement le bloc de code suivant, en exécutant à la place un autre bloc de code. Après l'exécution de l'autre bloc de code, le code retourne (parfois avec une certaine valeur) et continue l'exécution du bloc suivant.
  • Instructions GOTO: Le code contourne le bloc de code suivant , sautant directement à un autre bloc.

Des constructions similaires à celles-ci sont-elles présentes dans l'ADN? Si oui, comment sont-ils mis en œuvre et comment s'appellent-ils?

while (télomères> 0) {ADN.replicate; cell.divide; telomeres- = 1; sleep (x);}
Un appel de fonction est juste une instruction sophistiquée `GOTO`.
Pour moi, GOTO n'a de sens que pour l'exécution de code séquentiel, et ce n'est pas le cas pour l'ADN (beaucoup de transcription se produit tout le temps en parallèle).
@fileunderwater L'exécution série se produit pendant les cascades de signalisation
@MichaelKjörling Un appel de fonction nécessite qu'il y ait un environnement séparé pour la fonction. Il peut prendre des arguments comme entrées et renvoie une sortie. «GOTO» d'autre part est la partie du programme principal et contrôle juste le flux des instructions. Alors que le flux d'informations dans le système biologique peut être contrôlé, il est presque impossible de fournir un environnement séparé nécessaire pour de véritables fonctions.
@WYSIWYG oui, mais n'est-ce pas davantage un cas de rétroaction positive (ou d'activation / inhibition) similaire aux instructions IF, et non GOTO, comme dans l'exécution-contournement-exécution. Juste ma perception, mais je ne sais pas assez sur les spécificités de la transcription de l'ADN pour vraiment dire. Cela montre peut-être à quel point il peut être difficile de dessiner des analogues de programmation-ADN clairs.
@fileunderwater Il existe des alternatives de programmation à `GOTO`. Dans la plupart des langues, il est obsolète. Ainsi, l'action de `GOTO` peut être effectuée par d'autres instructions. Alors vous avez raison. De plus, "GOTO" nécessite des étiquettes; même si un promoteur pour un certain TF peut être considéré comme un label, il s'agit plutôt d'une condition logique à remplir. La logique sous-jacente est donc plus importante que les déclarations réelles.
Je pense qu'avec l'ADN, nous sommes plus proches des bits et des octets eux-mêmes ou peut-être du code machine que d'un langage de programmation.
@WYSIWYG Vrai, bien que la plupart des instructions de flux de contrôle se traduisent par une instruction machine similaire à GOTO, telle qu'un saut ou un saut conditionnel.
@skymninge Même au niveau des bits et des octets, le matériel lui-même agit comme une sorte de machine de Turing.
Il est essentiel de comprendre que votre ordinateur _ n'a pas_ de boucles et d'appels de fonctions. Il a des comparaisons et des sauts.
L'ADN n'est pas un programme au sens où vous le pensez. Je suppose que cela pourrait être considéré comme un programme _déclaratif_ avec l'interpréteur approprié, cependant?
Je suis presque sûr que l'ADN ressemble plus à des données génériques qu'à un programme exécutable à part entière. C'est le fichier de données utilisé par le bio-programme
Je pense que l'ADN ressemble plus à une page HTML: c'est juste une déclaration de quels éléments * pourraient * être visibles sur une page, (bien que `display: none` soit parfaitement autorisé dans l'ADN); ces éléments * peuvent * inclure des protéines Javascript. Ici et là, une forme rudimentaire de PHP est présente (voir la réponse @WYSIWYG's).
[This] (http://ds9a.nl/amazing-dna/) est un article probablement pertinent que je pense que personne n'a encore mentionné.
@WYSIWYG Je dirais que l'activation du récepteur nucléaire peut représenter un appel de fonction. Ils traînent dans le cytosol jusqu'à ce qu'ils soient activés par la liaison de leur ligand, puis se trans-localisent au noyau pour remplir leur fonction.
Apprendre la génétique et la biologie moléculaire de cette façon; Quelqu'un pourrait-il me référer des livres, ou du moins quel domaine d'étude je dois rechercher?
Document sur la nature connexe: [Conception à grande échelle de circuits génétiques robustes avec de multiples entrées et sorties pour les cellules de mammifères.] (Http://www.nature.com/nbt/journal/vaop/ncurrent/full/nbt.3805.html)
Sept réponses:
WYSIWYG
2015-03-04 10:42:57 UTC
view on stackexchange narkive permalink

Exemples biologiques similaires aux instructions de programmation:

  • IF : activateur transcriptionnel; lorsqu'il est présent, un gène sera transcrit. En général, il n'y a pas de fin d'événements à moins que le signal soit parti; le programme ne se termine qu'avec la mort de la cellule. Ainsi, l'instruction IF fait toujours partie d'une boucle.
  • WHILE : Répresseur transcriptionnel; gène sera transcrit jusqu'à ce que le répresseur ne soit pas présent.
  • Il n'y a pas d'équivalents d'appels de function . Tous les événements se produisent dans le même espace et il y a toujours une probabilité d'interférence. On peut dire que les organites peuvent agir comme un compartiment qui peut avoir une fonction comme des propriétés, mais ils sont très complexes et ne sont pas simplement une sorte de périphériques d'entrée-sortie.
  • GOTO dépend toujours d'une condition. Cela peut se produire dans le cas de certaines connexions réseau telles que des boucles à réaction et des chemins branchés. Par exemple, s'il existe une voie de signalisation comme celle-ci:
    A → B → C et qu'il y a une autre connexion D → C alors si d'une manière ou d'une autre D est activé, il affectera directement C , rendant ainsi A et B inutiles.

Les portes logiques ont été construites en utilisant des circuits biologiques synthétiques. Consultez cet avis pour plus d'informations.


Remarque

Les processus biologiques moléculaires ne peuvent pas être directement comparés à un code informatique. C'est la logique sous-jacente qui est importante et non la construction d'énoncé elle-même et ces exemples ne doivent pas être considérés comme des analogies absolues. Il est également à noter que l'ADN n'est qu'un ensemble d'instructions et pas vraiment une entité entièrement fonctionnelle (il est fonctionnel dans une certaine mesure). Cependant, même étant juste un code, il est comparable à un code HLL qui doit être compilé pour exécuter ses fonctions. Consultez également ce message.

Il est également important de noter que la cellule, comme de nombreux autres systèmes physiques, est de nature analogique. Par conséquent, dans la plupart des situations, il n'y a pas de valeur 0/1 (binaire) des variables. Considérez l'expression génique. Si un activateur transcriptionnel est présent, le gène sera transcrit. Cependant, si vous continuez à augmenter la concentration de l'activateur, l'expression de ce gène augmentera jusqu'à atteindre un point de saturation. Il n'y a donc pas de logique numérique ici. Cela dit, j'ajouterais que le changement de comportement est possible dans les systèmes biologiques (y compris l'expression génique) et est également utilisé dans de nombreux cas. Certains types de structures de réseaux de régulation peuvent donner lieu à une telle dynamique. La coopération avec ou sans rétroaction positive est l'un des mécanismes qui peuvent implémenter un comportement de commutation. Pour plus de détails, consultez l’ultrasensibilité. Consultez également " La génétique moléculaire peut-elle créer une variable booléenne à partir d'une variable continue?"

Je classerais l'épissage d'introns comme une sorte de GOTO, car il saute essentiellement le "pointeur" du ribosome vers une valeur différente.
Très agréable! Où se situeraient les cadres de lecture alternatifs?
@MarchHo Oui, cela peut également être considéré comme un exemple. De nombreuses analogies peuvent être établies. Les réflexes spinaux peuvent être un exemple de «BREAK»
@CRags Je suppose que d'autres cadres de lecture peuvent être un exemple de `SWITCH-CASE`. Tout dépend. Le déclenchement logique est ici plus pertinent que les instructions de programme. Après toutes ces déclarations sont basées sur des tests logiques.
Bien que vos exemples soient intelligents, j'estime que l'analogie utilisée ici (ADN contre code informatique) est si pauvre qu'elle est trompeuse.
@JackAidley Il est vrai que la biologie moléculaire ne peut être directement comparée à un code informatique. J'ai destiné cette réponse à quelqu'un qui est curieux de savoir si une cellule peut effectuer des calculs comme un programme informatique. J'ai déjà mentionné que c'est la logique sous-jacente qui est importante et non la construction de la déclaration elle-même et ces exemples ne doivent pas être considérés comme des analogies absolues. J'ajouterai ceci dans la réponse pour éviter toute confusion.
Et @JackAidley Je n'ai mentionné nulle part que l'ADN remplit toutes les fonctions. Un TF est une protéine. Aussi complexe soit-elle, la propriété du système peut être prévisible sur la base du code ADN.
Je pense vraiment que les compartiments accomplis par les membranes cellulaires pourraient être comparés aux fonctions. C'est une réponse impressionnante @WYSIWYG
WYSIWYG, c'est bien que vous n'ayez pas mentionné que l'ADN exécute toutes les fonctions que vous décrivez, mais vous devriez vraiment envisager de mentionner explicitement dans votre réponse que l'ADN ne les exécute pas et ne peut pas les exécuter; le fait que * le code * informatique décrit de telles structures de contrôle est vraiment un aspect assez fondamental de l'exhaustivité de Turing, et il est très important dans le contexte de cette question de noter que l'ADN ne partage * pas * cette caractéristique.
@KyleStrand IMO ni l'ADN ne fait la fonction ni le code HLL. Les deux ne fournissent que des instructions; L'ADN est beaucoup plus cryptique. Ce n'est pas parce qu'une machine de Turing n'a pas été développée en utilisant le code ADN que cela est théoriquement impossible. C'est juste mon opinion. Il existe plusieurs différences entre l'ADN et le code informatique. L'objectif de cette réponse était simplement de souligner quelques similitudes rudimentaires. J'ai cependant ajouté votre suggestion.
@WYSIWYG Merci. Je suppose que ce que je voulais dire à propos de "l'exécution de toutes les fonctions" est plus que les HLL (et les LLL) * prescrivent * le processus réel pour les exécuter - là où les sauts se produisent, etc. se. L'ADN, pour autant que nous le sachions, ne le fait pas (même s'il est vrai qu'il pourrait faire beaucoup plus de ce genre de chose que nous ne le pensons). Je suppose que par analogie, si l'ADN est comme un plan, le code est un peu comme un plan * combiné avec des instructions de travail * pour les personnes qui construisent réellement la chose décrite par le plan.
"organites" semble être comme un gestionnaire d'interruptions, ou peut-être des événements. Je pense qu'un langage basé sur des événements peut être une meilleure comparaison pour les compréhensions logiques.
Pour produire des calculs, tout ce dont vous avez besoin est juste un saut conditionnel (c'est-à-dire si X va à P). Toutes les autres instructions de contrôle sont juste pour la commodité et peuvent être simulées par saut conditionnel. Un système de calcul qui n'a qu'un saut conditionnel pour le contrôle est Turing Complete.
Les organites @lesto sont comme des sous-programmes qui interagissent en permanence avec le programme principal. Ils ont leur propre environnement et un certain niveau d'autonomie, mais dépendent de la cellule.
@LieRyan D'accord. Tout ce dont vous avez besoin, ce sont des portes logiques.
Il existe certaines hypothèses concernant les micro-environnements de chromatine qui seraient analogues aux espaces de noms en programmation.
"Exemples biologiques" - Mais la question spécifie l'ADN, donc clairement cette réponse est fausse. Montre que vous ne devriez pas autoriser certaines personnes à voter.
@David Je conviens que cette question n'est pas géniale (et la réponse aussi), mais malheureusement, les questions les plus bien posées (et les plus recherchées) ne sont souvent pas si populaires. Quoi qu'il en soit, qu'est-ce que vous êtes en désaccord sur les «exemples biologiques»? J'entendais par ce terme des situations analogues dans les systèmes biologiques. Notez que OP compare l'ADN à un programme informatique. Puisque l'ADN code toutes les informations biologiques, l'ADN est le programme. La plupart de mes exemples sont liés à la régulation transcriptionnelle, c'est-à-dire aux opérations directes de / sur l'ADN. Donc la réponse, bien que pas géniale, n'est pas fausse.
Pardon. Je n'ai pas remarqué que c'était toi. Je ne veux pas entrer dans une guerre des flammes. Juste que la question me semble une fausse analogie typique de l'informaticien entre l'information * explicite * dans le code et celle dans l'ADN, ce qui a provoqué ma réponse récente à une vieille question. Les informations contenues dans l'ADN ne sont pas explicites et je doute que vous puissiez jamais espérer comprendre les effets de l'expression des protéines à partir de la seule lecture de l'ADN.
The Nightman
2015-03-04 09:39:41 UTC
view on stackexchange narkive permalink

Il y a certainement des comparaisons qui pourraient être faites entre la façon dont les gènes sont exprimés à partir de l'ADN et les fonctions logiques, mais elles ne sont pas géniales.

Mais la biologie synthétique est vraiment un nouveau domaine en plein essor qui tente pour intégrer des fonctions logiques dans la biologie, voir par exemple Siuti et al (2013).

L'article ci-dessus est un exemple brillant d'un groupe utilisant des bactéries pour stocker des informations et s'assemblant dans des circuits biologiques qui peuvent ensuite être utilisés pour traiter des fonctions logiques . Donc, cela se fait mais pas exactement de la manière que vous proposez.

Jack Aidley
2015-03-04 19:10:33 UTC
view on stackexchange narkive permalink

L'ADN n'est pas analogue au code informatique, ce qui rend votre recherche de constructions similaires sans signification. Pour donner quelques exemples simples pourquoi c'est:

  • Le code informatique a un ordre d'exécution séquentiel; L'ADN agit en parallèle et dans le désordre, il n'est pas "exécuté".

  • Le code informatique a une signification stricte et cohérente, donc la ligne if x == 4: x = 7 fait toujours la même chose; l'ADN codant se traduit en acides aminés et ce sont les interactions chimiques complexes entre ces acides qui donnent aux protéines leur fonction, donc aucun morceau d'ADN codant ne peut être compris en dehors de sa protéine.

Les systèmes biologiques ont certaines voies qui fonctionnent de la même manière que les ordinateurs, mais vous devriez les rechercher au niveau des protéines et non au niveau de l'ADN et, même dans ce cas, vous devez faire extrêmement attention à ce que votre analogie ne nuise pas à votre compréhension de ce qui se passe réellement .

Lorsque vous dites que l'ADN a besoin de protéines pour exécuter ses fonctions, les programmes informatiques ont également besoin de compilateurs pour exécuter leur code. C'est finalement le langage machine qui indique à l'ordinateur ce qu'il doit faire.
Je ne dis pas que l'ADN a besoin de protéines pour exécuter ses fonctions; Je dis que l'ADN est fondamentalement différent du code informatique.
OK, mais il existe des langages de programmation massivement parallèles où chaque ligne est exécutée en même temps et peut être hors séquence.Et ce n'est pas parce que les lignes sont sensibles au contexte que ce n'est pas un langage de programmation, cela le rend juste beaucoup plus complexe. dit, la façon dont j'ai compris l'ADN, c'était plus des données qu'un programme.
Même dans les langages de programmation parallèles, chaque instruction est exécutée séquentiellement. C'est juste qu'il y a plusieurs "threads" d'exécution en même temps. L'ADN n'est ni une donnée ni un programme. L'analogie est totalement inexacte.
Je pense que l'ADN est à la fois données et programme. Ses régulateurs d'expression agissent comme des clauses logiques, donc l'analogie est au moins curieuse.
fileunderwater
2015-03-04 15:47:08 UTC
view on stackexchange narkive permalink

Juste pour ajouter aux réponses précédentes, mais l ' interférence transcriptionnelle (voir par exemple Shearwin et al., 2005) peut être considérée comme une forme de déclaration IF (ou WHILE ) dans le sens que:

  if (x transcrit) {not y transcrit}  

L'interférence n'a pas à être binaire cependant, et plus courante sont des réponses notées. Des interférences transcriptionnelles peuvent également avoir lieu au stade de l'ARN (voir par exemple Xue et al, 2014), en utilisant ARN antisens et en fournissant souvent une rétroaction négative boucle, mais l'interférence est ensuite supprimée de l'ADN, et ne représente pas un analogue de déclaration IF directe au stade de l'ADN.

Pour moi, GOTO a principalement un sens pour l'exécution de code séquentiel, et ce n'est pas le cas de l'ADN (beaucoup de transcription se produit tout le temps en parallèle). Plus généralement, "l'exécution" parallèle de l'ADN ainsi que les interactions continues et les boucles de rétroaction entre l'ADN, les transcriptions et les protéines (entre autres) signifie également que les processus cellulaires sont beaucoup moins clairs et traçables que le code informatique, ce qui signifie que l'ordinateur le code est une très mauvaise métaphore des processus cellulaires et du fonctionnement de l'ADN.

Je pense que le parallélisme intrinsèque est un point clé. Le «traitement» biologique est en réalité plus analogique que numérique, car même le déclenchement discret des neurones est un codage de processus analogiques dans le neurone. Les processus d'une cellule sont beaucoup mieux approchés comme un ensemble horriblement (glorieusement?) Complexe de boucles de rétroaction analogiques croisées qui se chevauchent. L'expression génique en fait partie, bien qu'elle soit intimement liée à de nombreux autres processus cellulaires.
@DanBryant Grande description et d'accord - j'ai essayé de clarifier ce point davantage.
Sleepses
2015-03-04 15:27:26 UTC
view on stackexchange narkive permalink

Comme l'a dit WYSIWYG, il n'y a pas d'équivalent pour les appels de fonction, car il y aura toujours des interférences. Cependant, on pourrait soutenir que certaines voies modulaires (par exemple, la signalisation de l'apoptose) peuvent être vues comme un "bloc de code" où une certaine entrée conduira (presque) certainement à un certain effet. L'analogie avec les appels de fonction est que, en décrivant de nombreux mécanismes différents, cela permet un «code» plus court et plus efficace pour tout considérer entre par exemple. l'activation de la caspase et la fuite de cytochrome en un seul bloc. De plus, marquer une protéine avec de l'ubiquitine peut peut-être être vu comme un appel de fonction à la dégradation.

Si vous êtes intéressé par les blocs de construction pour la programmation avec la biologie, consultez le programme biobricks.org, qui vise à définir pièces modulaires (briques) pouvant être des capteurs, des fonctions logiques, des effecteurs, ...

Il y a aussi des interférences dans les appels de fonction: ils sont appelés variables globales, configuration du système, support matériel, etc.
akaDrHouse
2016-10-20 21:29:12 UTC
view on stackexchange narkive permalink

Concernant les appels de fonction:

Il n'y a pas d'équivalents d'appels de fonction. Tous les événements se produisent dans le même espace et il y a toujours une probabilité d'interférence. On peut affirmer que les organites peuvent agir comme un compartiment qui peut avoir une fonction comme des propriétés, mais ils sont très complexes et ne sont pas seulement une sorte de périphériques d'entrée-sortie.

et

Comme l'a dit WYSIWYG, il n'y a pas d'équivalent pour les appels de fonction, car il y aura toujours des interférences.

Je pense que les récepteurs nucléaires sont d'excellents exemples d'appels de fonction. Ils traînent dans le cytosol permettant à la programmation normale de fonctionner de manière normative. Lors de l'activation avec leur ligand, ils se transloquent vers le noyau pour activer des sous-programmes de répression / activation génique et des processus en aval ultérieurs.

De cette façon, on pourrait même affirmer que la plupart des interactions initiales de ligands qui déclenchent la signalisation cellulaire sont des appels de fonction.

h22
2017-06-18 01:10:02 UTC
view on stackexchange narkive permalink

En plus de l'excellente réponse WYSIWYG, il existe des constructions de type programmation au niveau inférieur:

  • FUNCTION CALL - remplaçant une seule sous-unité à l'intérieur d'une protéine complexe, assemblée à partir de plusieurs sous-unités, chacune codée par des gènes séparés. Cela peut également être considéré comme COMPOSITION, un autre concept de programmation.
  • IF - épissage alternatif, un morceau d'ADN (exon) peut être inclus ou non dans le transcrit qui code la protéine finale.
J'ai annulé la modification qui a remis des tics autour des parties de cette réponse qui ne sont pas du code. Ici, FUNCTION CALL, COMPOSITION et IF ne sont pas du code, ce sont des concepts de programmation


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...