L'algoritmo di Euclide e come sarà scritto in CRN++. Credito:Vasic et al.
La biologia sintetica è un'area di ricerca relativamente nuova che potrebbe avere un impatto significativo su una serie di campi, compresa la biologia, nanofabbricazione e medicina. Una sfida primaria in questo campo emergente è quella di incorporare il calcolo in contesti molecolari, in situazioni in cui non è possibile inserire microcontrollori elettronici. Ciò richiede lo sviluppo di metodi in grado di rappresentare efficacemente i calcoli utilizzando componenti molecolari.
Un team di ricercatori dell'Università del Texas ad Austin ha creato CRN++, un nuovo linguaggio per la programmazione di cinetiche chimiche deterministiche (azione di massa) nell'esecuzione di calcoli. Nella loro carta, pre-pubblicato su arXiv , i ricercatori delineano questo nuovo linguaggio e costruiscono un compilatore che traduce i programmi CRN++ in reazioni chimiche.
"Una sfida tecnica chiave della biologia sintetica è progettare un controllore chimico che interagisca all'interno di un ambiente cellulare, raggiungere un determinato compito, "Marco Vasic, uno dei ricercatori che ha condotto lo studio, detto Tech Xplore . "Per realizzare questo, è necessario sia ingegnerizzare molecole sintetiche che programmarle. Le molecole interagiscono tramite reazioni chimiche, e programmando le molecole, intendiamo definire regole di interazione (reazioni chimiche) tra loro."
I recenti miglioramenti nella sintesi del DNA hanno aperto nuove, possibilità entusiasmanti per l'ingegneria molecolare. Però, i ricercatori in biologia sintetica devono prima escogitare modi per progettare le regole di interazione (reazioni chimiche) per raggiungere un obiettivo desiderato. L'obiettivo principale di questo recente studio era progettare un linguaggio di livello superiore che potesse esprimere il comportamento delle reazioni chimiche in un modo più intuitivo.
"Nell'ingegneria del software, un programmatore scrive in un linguaggio di alto livello facile da capire, e tale programma viene compilato fino al codice macchina, che è difficile da capire per un essere umano, ma comprensibile da una macchina, "Spiegava Vasic. "Abbiamo cercato di costruire un'analogia nella programmazione molecolare definendo un linguaggio di alto livello su cui sia più facile ragionare e che sia compilato in una chimica 'complessa'".
L'output del compilatore e i risultati della simulazione per il programma CRN++. Credito:Vasic et al.
CRN++ si basa su due idee:la modularità e l'uso di un oscillatore. Modularità significa che il linguaggio include un insieme di reazioni chimiche chiamate moduli che possono essere composti senza interferenze tra diversi insiemi di reazioni. Per realizzare questo, i ricercatori hanno mappato le operazioni di base di CRN++ su questi moduli. Hanno anche usato un oscillatore chimico per l'ordinamento temporale, che ha permesso loro di tradurre in chimica comandi imperativi ordinati della lingua.
"Al meglio delle nostre conoscenze, siamo i primi a fornire un linguaggio di programmazione imperativo conforme alle reti di reazioni chimiche, " Vasic ha detto. "Abbiamo reso open-source il nostro codice, compreso CRN++, così come il quadro di simulazione, poiché speriamo che ciò renda più facile per i ricercatori provare nuovi approcci, e quindi far avanzare ulteriormente l'area."
I ricercatori hanno valutato CRN++ e ne hanno dimostrato la fattibilità su una serie di algoritmi per il calcolo discreto e di valore reale. Il nuovo linguaggio può anche essere facilmente esteso per supportare nuovi comandi o implementazioni, rendendolo la base ideale per lo sviluppo di programmi molecolari più avanzati.
"I programmi tradotti da CRN++ in chimica contengono una certa quantità di errori, che può essere molto basso in alcune classi di programmi ma può essere alto o accumularsi nel tempo in altri, " Vasic ha detto. "Abbiamo quindi in programma di indagare ulteriormente sulle fonti di errore e progettare programmi che garantiscano che l'errore non si accumula oltre un determinato limite".
Vasic e i suoi colleghi stanno anche cercando di ampliare il loro linguaggio di programmazione includendo nuovi moduli, definiti come insiemi di reazioni chimiche che possono svolgere operazioni di base.
© 2018 Tech Xplore