L’avenir de la programmation (5/6) : programmer le vivant

Si nos quatre premières parties ont illustré certaines tendances de la programmation contemporaine, nous sommes restés dans des domaines assez « classiques ». De fait, il ne s’est agi jusqu’ici que d’interagir avec des ordinateurs traditionnels, faits de composants électroniques et dont le résultat reste avant tout « virtuel ». Dans les deux prochains chapitres, nous allons entrer dans des domaines plus spéculatifs. Peut-on adapter la logique de la programmation à des systèmes radicalement différents de nos bons vieux PC (ou tablettes, ou smartphones, qui ne sont au final que des PC miniaturisés) pour s’attaquer à des phénomènes comme le vivant, voire, avec l’informatique quantique, à la structure de la réalité et de la matière elle-même ?

Programmer le vivant, on en parle depuis un certain temps. La biologie synthétique repose pour une bonne part sur une métaphore informatique, ainsi que nous l’avons souvent souligné. La question n’est pas sans soulever diverses polémiques : le code ADN peut-il être comparé à un programme informatique, la cellule à un ordinateur ? Beaucoup objecteront que la métaphore est incorrecte, que l’ADN reste une molécule inerte si la cellule ne l’utilise pas à bon escient. Que la logique du vivant ne ressort en rien de l’informatique. On n’entrera pas dans ces débats aujourd’hui. De toutes façon, on n’aura la réponse qu’une fois testées la valeur et les limites de cette métaphore, et si elle se montre en mesure de produire certains résultats efficaces (et pas trop dangereux).

Cet avertissement effectué, voyons donc quelles sont les idées des nouveaux « programmeurs » du génome.

Les principes fondamentaux

Rappelons les bases de la génétique : au coeur de la cellule se trouve l’ADN, lequel se subdivise en gènes. Le but d’un gène est la création d’une protéine. Ces molécules constituent les briques de l’organisme vivant.

L’idée de base de la biologie synthétique est de construire autour du gène une série de compilateurs, de langages de haut niveau, voire des systèmes d’exploitation susceptibles de rendre invisible la structure chimique du gène, pour se concentrer sur sa fonction. Ainsi, comme l’explique Omri Amirav-Drorydans, créateur d’un « Genome Compiler » dans une vidéo, personne ne code plus ses programmes en utilisant des chaines de 1 et de 0. Pourtant, lorsqu’on entre dans le domaine de la biologie, il faut continuer à travailler avec les composants de bases A, C, G, et T ce qui est particulièrement complexe.

Pour ce faire, les biologistes de synthèse ont divisé l’ADN en « parties ». La plus importante est la portion d’ADN qui code une protéine, qu’on appelle l’opérateur. Cet opérateur pourra avoir diverses fonctions, par exemple créer une bioluminescence – même si un gène n’est pas forcément toujours actif.

Une autre « partie » importante est le promoteur, situé en général au commencement du gène. Celui-ci indique le début du codage de la protéine. Il existe deux sortes de promoteurs. Certains ne déclenchent l’activation que s’il existe un « activateur », une molécule présente au voisinage leur demandant de mettre le gène en route. D’autres au contraire activent systématiquement le gène, sauf si une molécule dite « répresseur » l’en empêche explicitement. Comme l’explique Dennis Sasha dans son livre Natural Computing, le principe de base de la biologie synthétique consiste à construire des circuits en jouant avec les « parties », comme les promoteurs, les répresseurs et les activateurs. On peut, par exemple, construire un feedback négatif, en associant un promoteur réprimé par une protéine X à un gène qui produit ladite molécule. Dans un premier temps, le promoteur activera la production de la macromolécule. Lorsque celle-ci se trouvera en nombre suffisamment important dans la cellule, le promoteur sera alors réprimé, ce qui conduira le gène à ne plus produire sa protéine. A terme cela conduira le promoteur à s’activer de nouveau, ce qui créera un effet de fluctuation, un peu comme un thermostat, qui chauffe jusqu’à ce que la pièce ait une certaine température. Il s’arrête à ce moment, puis reprend sa tâche lorsque l’air se refroidit.

En combinant ces « parties génétiques » de manière plus complexe, on peut construire la plupart des portes logiques telles ET, OU, NON et NON-ET (cette porte, qui donne un résultat vrai si et seulement si au moins un des opérateurs en entrée est FAUX, suffit d’ailleurs à construire toutes autres portes logiques). Et l’algèbre de Boole, comme chacun sait, est à la base de l’informatique et de la programmation.

La biologie synthétique « virtuelle »

Ces parties sont donc des éléments chimiques bien réels, qu’il faut se procurer pour les utiliser dans un labo. Mais si la métaphore informatique est juste, il devrait être possible, en théorie, de travailler virtuellement avec ces « parties », en utilisant un logiciel capable de « simuler » le fonctionnement des nouveaux gènes ainsi créés sur son écran. Un amateur pourrait ainsi se livrer à la biologie synthétique, avant d’envoyer ses résultats à un labo en vue d’une concrétisation…

De fait, un bon nombre de groupes, commerciaux ou open source, se sont lancés dans la course. Le projet Open WetWare du MIT énumère quelques-uns de ces programmes. A noter que même Microsoft s’y est mis avec une application en ligne, Visual GEC. La plupart des programmes de biologie synthétique s’apparentent à la programmation visuelle ou à la CAO. On choisit ses promoteurs, ses opérateurs, qu’on place sur un écran via un système de glisser-déposer. La vidéo suivante nous montre comment créer un créer un gène activé par la lumière, avec Tinkercell.

D’autres systèmes adoptent la forme d’un langage de programmation plus classique. C’est le cas par exemple du langage Kera (non disponible sur le web mais présenté dans ce papier).

Voici un exemple du code utilisé par ce système :

Cell X = new Cell(“E. Coli”) ;

Ce qui signifie qu’on travaillera sur la bactérie E Coli

X.compartment(“nucleus”) ;

Cela veut dire qu’on effectue ses modifications sur le noyau de la cellule. On pourrait spécifier un autre « compartiment » comme le cytoplasme ou les mitochondries… (les esprits ronchons objecteront qu’il n’y a pas de noyau dans une bactérie comme E.Coli ; en fait ici, nucleus, désigne probablement le brin d’ADN « central » de la bactérie).

On choisit alors le gène qu’on veut transformer :

X.selectgene(“g1”) ;
X.promoter(“replace”, “ACTGCTA”) ;

Et dans ce cas, on remplace le « promoteur » par une nouvelle séquence de nucléotides.

Le travail de Kera ne s’arrête pas là. A l’aide d’une base de données, le système vérifie si le nouveau « promoteur » est compatible avec le gène en question (on ne peut pas associer n’importe quel promoteur à n’importe quel opérateur). Il est possible d’établir des conditions, disant que si la nouvelle formule n’est pas viable, on peut éventuellement effectuer une autre action…

Première constatation, le code n’est effectivement pas très difficile à comprendre. En revanche, pas question de s’y attaquer si on ne connait rien à la biologie… et on n’échappe pas à l' »assembleur » de la biologie, les maudites lettres ATCG…

Pas encore la démocratisation

Lorsqu’on découvre la biologie synthétique, on se prend à rêver d’un langage parfaitement « formel » qui permettrait à quelqu’un d’ignorant en biochimie (bref, quelqu’un comme moi) de commencer à « bricoler » l’ADN, au moins virtuellement. Et de penser qu’il existe un « hello world » propre à la biologie synthétique.

J’ai dû déchanter.

Première observation pour l’ignorant que je suis, le « hello world » n’est pas là. Trop grande complexité des logiciels ou absence de documentation et de tutoriels destinés aux débutants ? Toujours est-il que la démocratisation de la biologie synthétique promise par ses adeptes semble encore loin. En tout cas pour moi.

Autre point qui semble notable. Outre l’absence systématique de documentation, beaucoup de programmes ont cessé d’être développés. C’est le cas par exemple de Tinkercell, qui reprenait lui même les fonctionnalités d’un système lui aussi disparu, Athena. Cela peut vouloir dire plusieurs choses. Soit ces programmes, très futuristes, sont plus compliqués à élaborer qu’on ne le pense, soit ils ont été créés en dehors de tout financement, par des enthousiastes, sur leur temps de loisir. Dans les deux cas, on assiste à la naissance d’un milieu bourgeonnant, mais instable.

Adventures in synthetic biologyDonc, pas question actuellement pour un amateur doué en informatique de se livrer à la synbio sans de bonnes connaissances de la biologie et de la génétique.

La communauté fait pourtant des efforts pour initier les débutants. Drew Endy a ainsi publié un « comic »(.pdf) résumant quelques-unes des idées de base de cette nouvelle discipline, et son projet se continue à biobuilder.org, un site qui contient de nombreuses BDs et animations pour les newbies… Ce qui ne signifie pas pour autant que le contenu n’en soit pas dense !

La programmation du vivant révèle bien d’autres problématiques que celle de la biologie synthétique, par exemple le champ du DNA Computing, un autre domaine qui mériterait à lui seul une longue analyse. Nous y reviendrons…

Rémi Sussan

Retrouvez le dossier L’avenir de la programmation :

À lire aussi sur internetactu.net

0 commentaires