{"id":3531,"date":"2022-12-01T18:17:26","date_gmt":"2022-12-01T18:17:26","guid":{"rendered":"https:\/\/alife.org\/?post_type=encyclopedia&p=3531"},"modified":"2022-12-01T18:27:55","modified_gmt":"2022-12-01T18:27:55","slug":"stringmol","status":"publish","type":"encyclopedia","link":"https:\/\/alife.org\/encyclopedia\/artificial-chemistry\/stringmol\/","title":{"rendered":"Stringmol"},"content":{"rendered":"\n
Stringmol is a “string-based programming language”, which uses encoded molecules as strings of operation code <\/span>. It acts as an artificial chemistry system that displays the continuous appearance of chemical species. Stringmol has a functionality that allows probabilistic binding, which means that an interaction between molecules can occur by chance. Among many goals in artificial life<\/a>, Stringmol research and its development aim to show open-ended novelty. <\/p>\n\n\n\n Stringmol consists of two symbol types, Templates (the set {‘A’,… ‘Z’}) and Functional (the set {‘$’, ‘>’, ‘^’, ‘?’, ‘=’, ‘%’, ‘}’ }), and four pointer types, Instruction, Flow, Read and Write.<\/p>\n\n\n\n With these types, Stringmol exhibits a soft binding<\/em> of DNA interactions. Soft binding refers to the type of bind using a ‘soft’ matching algorithm. “Less good matches have a lower probability of binding” <\/span> in soft binding. This type of binding is necessary to express genes through their phenotype<\/a>s. The binding probability that is used for binding molecules determines the alignment length and accuracy. Where the binding occurs affects which molecule is active and where the reaction program starts.<\/p>\n\n\n\n The four types of pointers direct the code of a reaction to initiate and carry out different actions. For example, assume that there are two chemical molecules we want to bind using Stringmol. The two molecules would initially need to be represented in a specific format of strings that Stringmol can read. The Instruction pointer<\/em> points at the next code to be executed and increments. The Flow pointer<\/em> moves around via the ‘$’ operator and other pointers then follow. The Read pointer<\/em> reads the code source of the second Stringmol string when it encounters the ‘=’ symbol in the first Stringmol string. As shown in the example in figure 2, when the Instruction pointer<\/em> is pointing at the ‘=’ symbol, the big R (which represents the Read Pointer) <\/em>is located at the beginning of the second string, which is the serial of template symbols on top. The Write pointer<\/em> writes the code to the end of the second Stringmol string that the Read pointer <\/em>just read at the end of the first string, which is the serial of template symbols on the bottom. As shown in the example in figure 2, when the Instruction pointer<\/em> is pointing at the ‘=’ symbol, the big W (which represents the Write pointer) <\/em>is located at the end of the first string, which is the serial of template symbols on the bottom. In addition to the feature of binding two Stringmol strings, there also is a feature in Stringmol, in which a group of Stringmol molecules based on the initial molecules specified can be run to observe the dynamics of any system. In this feature, a mutation option can even be turned on to see the system evolve. <\/p>\n\n\n\nOverview<\/strong><\/h1>\n\n\n\n