Small Universal Bacteria and Plasmid Computing Systems

Bacterial computing is a known candidate in natural computing, the aim being to construct “bacterial computers” for solving complex problems. In this paper, a new kind of bacterial computing system, named the bacteria and plasmid computing system (BP system), is proposed. We investigate the computational power of BP systems with finite numbers of bacteria and plasmids. Specifically, it is obtained in a constructive way that a BP system with 2 bacteria and 34 plasmids is Turing universal. The results provide a theoretical cornerstone to construct powerful bacterial computers and demonstrate a concept of paradigms using a “reasonable” number of bacteria and plasmids for such devices.


Introduction
In cell biology, bacteria, despite their simplicity, contain a well-developed cell structure that is responsible for some of their unique biological structures and pathogenicity. The bacterial DNA resides inside the bacterial cytoplasm, for which transfer of cellular information, transcription, and DNA replication occurs within the same compartment [1,2]. Along with chromosomal DNA, most bacteria also contain small independent pieces of DNA called plasmids, which can be conveniently obtained and released by a bacterium to act as a gene delivery vehicle between bacteria in the form of horizontal gene transfer [3].
Bacterial computing was coined with the purpose of building biological machines, which are developed to solve real-life engineering and science problems [4]. Practically, bacterial computing proves mechanisms and the possibility of using bacteria for solving problems in vivo. If an individual bacterium can perform computation work as a computer, this envisions a way to build millions of computers in vivo. These "computers", combined together, can perform complicated computing tasks with efficient communication via plasmids. Using such conjugation, DNA molecules, acting as information carriers, can be transmitted from one cell to another. On the basis of the communication, information in one bacteria can be moved to another and can be used for further information processing [5,6].
Bacterial computing models belong to the field of bio-computing models, such as DNA computing models [7][8][9] and membrane computing models [10][11][12]. Because of the computational intelligence and parallel information processing strategy in biological systems, most of the bio-computing models have been proven to have the desired computational power. Most of these can do what a Turing machine can do (see, e.g., [13][14][15][16][17][18][19]). The proposed bacterial computing models can provide powerful computing models at the theoretical level but a lack of practical results. Current bacterial computing models are designed for solving certain specific biological applications, such as bacteria signal pathway detecting, but give no result for computing power analysis.
In general bacterial computing models, information to be processed is encoded by DNA sequences, and conjugation is the tool for communicating among bacteria. The biological process is shown in Figure 1. Looking for small universal computing devices, such as small universal Turing machines [20,21], small universal register machines [22], small universal cellular automata [23], small universal circular Post machines [24], and so on, is a natural and well-investigated topic in computer science. Recently, this topic started to be considered also in the framework of bio-computing models [25][26][27][28][29][30][31].
In this work, we focus on designing small universal bacteria and plasmid computing systems (BP systems); that is, we construct Turing universal BP systems with finite numbers of bacteria and plasmids. Specifically, we demonstrate that a BP system with 2 bacteria and 34 plasmids is universal for computing recursively enumerable functions and families of sets of natural numbers. In the universality proofs, 2 bacteria are sufficient, as in [32], but the numbers of plasmids needed are reduced to about 10 from a possible infinite number. The results provide a theoretical cornerstone to construct powerful "bacterial computers" and demonstrate a concept of paradigms using a "reasonable" number of bacteria and plasmids for these devices.

The Bacteria and Plasmid System
In this work, as for automata in automata theory, the BP system is formally designed and defined. In general, the system is composed of three main components: -a set of bacteria; -a set of plasmids; -a set of evolution rules in each bacterium, including conjugation rules and gene-editing (inserting/deleting) rules.
The evolution rules are in the form of productions in formal language theory, which are used to process and communicate information among bacteria. Such a system is proven to be powerful for a number of computing devices; that is, they can compute the sets of natural numbers that are Turing computable. However, in the universality proof, the number of plasmids involved is not limited. It is possible to use an infinite number of plasmids for information processing and exchanging. Such a feature is acceptable (as for the infinite tape in Turing machines) in mathematic theory but is not feasible with the biological facts.
A BP system of degree m is a construct of the following form: , where the following are true.
• O = {g 1 , g 2 , . . . , g n } is a set of genes in the chromosomal DNA of bacteria. • P = P crispr ∪ P temp ∪ {p null } is a set of plasmids.
-Plasmids in P crispr are of the form (cas9, gRN A α g i ) with α ∈ {insert, delete}, which is used for cutting specific genes.
-Plasmids in P temp are of the form (gRN A template g i ), which takes templates of genes to be inserted.
R i is a set of rules in bacterium b i of the following forms: (1) Conjugation rule is of the form (ATP-P c , b i /b j , ATP-P c ), by which ATP in bacterium b i is consumed and a set of plasmids P c ⊆ P associated with ATP is transmitted into bacterium b j .
(2) CRISPR/Cas9 gene inserting rule is of the form p i p s i × (g j , g k ), where p i ∈ P crispr , α = insert, p s i ∈ P temp , and g j and g k are two neighboring genes. The insertion is operated if and only if g j and g k are neighboring genes and plasmids p i p s i are present in the bacterium. (3) CRISPR/Cas9 gene deleting rule is of the form p i × (g j , g k ) with p i p null ∈ P crispr , α = detele, and g j and g k being two neighboring genes. The rule can be used if and only there exists gene g i placed between the two neighboring genes.
• Variable b out is the output bacterium.
It is possible to have more than one enabled conjugation rule at a certain moment in a bacterium, but only one is non-deterministically chosen for use. This is due to the biological fact that ATP can support the transmission of one plasmid but not all of the plasmids. If a bacterium has more than one CRISPR/Cas9 operating rule associated with a certain common plasmid, only one of the rules is non-deterministically chosen for use; if the enabled CRISPR/Cas9 operating rules are associated with different plasmids, all of them will be used to edit the related genes.
The configuration of the system is described by chromosomal DNA encoding the information in each bacterium. Thus, the initial configuration is (w 1 , w 2 , . . . , w m . Using the conjugation and CRISPR/Cas9 rules defined above, we can define the transitions among configurations. Any sequence of transitions starting from the initial configuration is called a computation. A computation is called successful if it reaches a halting configuration, that is, no rule can be used in any bacterium. The computational result is encoded by the chromosomal DNA in bacterium b out when the system halts, where b out ∈ {b 1 , b 2 , . . . , b m } denotes the output bacterium. There are several ways to encode numbers by the chromosomal DNA. We use the number of genes in the chromosomal DNA to encode different numbers computed by the system. The set of numbers computed by system Π is denoted by N(Π). We denote by NBP(bact j , plas k ) the family of sets of numbers computed/generated by BP systems with m bacteria and k plasmids (if no limit is imposed on the values of parameters m and k, then the notation is replaced by * ).
We need an input bacterium to receive genetic signals in the form of short DNA segments from the environment or certain bacteria, as well as an output bacteria, with which the system can compute functions. The input bacterium is denoted by b in with b in ∈ {b 1 , b 2 , . . . , b m }. Input bacterium b in can read/receive information from the environment, where information is encoded by DNA segments or a string of genes. When a BP system has both input and output bacteria, it starts by reading/receiving information from the environment through input bacterium b in . After reading the input information, the system starts its computation by using the conjugation and CRISPR/Cas9 gene inserting/deleting rules; it then finally halts. The computational result is stored in the output bacterium b out encoded by a number of certain genes.
Mathematically, if the input information is x, which is encoded by DNA segments composed of x genes, when the system halts, bacterium b out holds y genes. It is said that the BP system can compute the function f (x) = y. In general, if the inputs are x 1 , x 2 , . . . , x n in the form of DNA strands containing x i copies of gene g i with i = 1, 2, . . . , n, when the system halts, we obtain the computational result y in the output bacterium in the form of y copies of genes. The system is said to compute the function f (x 1 , x 2 , . . . , x n ) = y.

Universality Results
In this section, we construct two small universal BP systems. Specifically, we construct a Turing universal BP system with 2 bacteria and 34 plasmids to compute recursively enumerable functions. As a natural-number computing device, a universal BP system with 2 bacteria and 34 plasmids is achieved.
In the following universality proofs, the notion of a register machine is used. A register machine is a construct of the form M = (m, H, l 0 , l h , R), where m is the number of registers, H is the set of instruction labels, l 0 is the start label, l h is the halt label (assigned to instruction HALT), and R is the set of instructions; each label from H labels only one instruction from R, thus precisely identifying it. The instructions are of the following forms: • l i : (ADD(r), l j , l k ) (add 1 to register r and then go to one of the instructions with labels l j and l k ); • l i : (SUB(r), l j , l k ) (if register r is non-zero, then subtract 1 from it, and go to the instruction with label l j ; otherwise, go to the instruction with label l k ); • l h : HALT (the halt instruction).
A register machine M generates a set N(M) of numbers in the following way: it starts with all registers being empty (i.e., storing the number zero) and then applies the instruction with label l 0 ; it continues to apply instructions as indicated by the labels (and made possible by the contents of registers). If the register machine finally reaches the halt instruction, then the number n present in specified register 0 at that time is said to be generated by M. If the computation does not halt, then no number is generated. It is known (e.g., see [33]) that register machines generate all sets of numbers that are Turing computable.
A register machine can also compute functions. In [22], register machines are proposed for computing functions, with the universality defined as follows: Let ϕ x (y) be a fixed admissible enumeration of the unary partial recursive functions. A register machine M is said to be universal if there is a recursive function g such that for all natural numbers x and y, it holds ϕ x (y) = M(g(x), y); that is, with input g(x) and y introduced in registers 1 and 2, the result ϕ x (y) is obtained in register 0 when M halts.
A specific universal register machine M u shown in Figure 2 is used here, which was modified by a universal register machine from [22]. Specifically, the universal register machine from [22] contains a separate check for zero of register 6 of the form l 8 : (SUB(6), l 0 , l 10 ); this instruction was replaced in M u by l 8 : (SUB(6), l 9 , l 0 ), l 9 :(ADD(6), l 10 ) (see Figure 2). Therefore, in the modified universal register machine, there are 8 registers (numbered from 0 to 7) and 23 instructions (hence 23 labels), the last instruction being the halting instruction. The input numbers are introduced in registers 1 and 2, and the result is obtained in register 0.   Proof. To this aim, we construct a BP system Π with 2 bacteria and 34 plasmids to simulate register machine M u shown in Figure 2. The system Π is of the form: . . , g 7 , g m } is set of genes in chromosomal DNA of bacteria;

A Small Universal BP System as Function Computing Device
Theorem 1. There exists a Turing universal BP system with 2 bacteria and 34 plasmids that can compute Turing-computable recursively enumerable functions.
Proof. To this aim, we construct a BP system Π with 2 bacteria and 34 plasmids to simulate the register machine M u shown in Figure 2. The system Π is of the following form: , where the following are true.
• O = {g 0 , g 1 , . . . , g 7 , g m } is set of genes in chromosomal DNA of bacteria. • P = P crispr ∪ P temp ∪ {p null } is a set of plasmids shown in Table 1, where -P crispr = {p 1 , p 2 , . . . , p 22 , p h }, whose elements associated with the labels of instructions are used for gene cutting; - 2,5,7,9,16,17,20, 21} are plasmids taking templates of genes to be inserted, which are used for simulating ADD instructions; -plasmid p null for bacteria conjugation is used for simulating SUB instructions.
• b 1 = (w 1 , R 1 ), where w 1 = λ, meaning no initial chromosomal DNA is placed in bacteria b 1 ; the set of rules R 1 is shown in Table 2.
, where w 2 = g 0 g m g 1 g m g 2 g m g 3 g m g 4 g m g 5 g m g 6 g m g 7 g m , indicating the initially placed chromosomal DNA in bacterium b 2 ; the set of rules R 2 is shown in Table 2.
which means bacterium b 2 can read signals from the environment, and when the system halts, the computational result is stored in bacterium b 2 .
In general, for each add instruction l i acting on register r ∈ {0, 1, 2, 3, 4, 5, 6, 7}, plasmids p i = (cas9, gRN A insert g r ) and p s i = (gRN A template g r ) are associated; for any SUB instruction l i acting on register r ∈ {0, 1, 2, 3, 4, 5, 6, 7}, a plasmid p i = (cas9, gRN A delete g r ) is associated in system Π. The numbers stored in register r are encoded by the number of copies of gene g r with r ∈ {0, 1, 2, 3, 4, 5, 6, 7} in chromosomal DNA of bacterium b 2 . Specifically, if the number stored in register r is n ≥ 0, then bacterium b 2 contains n + 1 copies of gene g r .
During the simulation of register machine M u by system Π, when bacterium b 1 holds a pair of plasmids p i p s i (respectively p i p null ) and ATP, the system starts to simulate an ADD instruction (respectively a SUB instruction) l i of M u : plasmids p i p s i (respectively p i p null ) are transmitted to bacterium b 2 by the conjugation rule; then one copy of gene g r between neighboring genes g r and g m is inserted (respectively deleted) to simulate increasing (respectively decreasing) the number in register r by 1; after this, bacterium b 2 sends ATP and plasmids p j p null to bacterium b 1 if the proceeding instruction l j is a SUB instruction or plasmids p j p s j if the proceeding l j is an ADD instruction.  Initially, there is no chromosomal DNA initially placed in bacterium b 1 , but bacterium b 2 has genes w 2 = g 0 g m g 1 g m g 2 g m g 3 g m g 4 g m g 5 g m g 6 g m g 7 g m . At the beginning, the system receives g(x) copies of gene g 1 and y copies of gene g 2 from the environment through input bacterium b 2 , which simulates the numbers g(x) and y being introduced in registers 1 and 2 for register machine M u . In this way, the chromosomal DNA of bacterium b 2 becomes g 0 g m g g(x)+1 1 g m g y+1 2 g m g 3 g m g 4 g m g 5 g m g 6 g m g 7 g m .
Once completing the reading of information from the environment, a pair of plasmids p 0 p s 0 and one unit of ATP is placed in bacterium b 1 to trigger the computation; meanwhile no plasmid or ATP is initially contained in bacterium b 2 . The transition of system Π by reading input signals encoded by g(x) copies of genes g 1 and y copies of gene g 2 through input bacterium b 2 is shown in Figure 3.
In what follows, we explain how system Π simulates ADD instructions and SUB instructions and outputs the computational result.
Simulating the ADD instruction: l i : (DD(r), l j ).
We assume at a certain moment that system Π starts to simulate an ADD instruction l i of M u , acting on register r ∈ {0, 1, 2, . . . , 7}. At that moment, bacterium b 1 holds two plasmids p i p s i and ATP, such that the conjugation rule (ATP-p i p s i , b 1 /b 2 , ATP-p i p s i ) is used. By using the conjugation rule, plasmids p i p s i and ATP are transmitted to bacterium b 2 . In system Π, plasmids p i and p s i are associated with the ADD instruction l i , where plasmid p i is of the form p i = (cas9, gRN A insert g r ) for cutting a certain site of chromosomal DNA, and p s i is of the form p i = (gRN A template g r ) carrying the gene to be inserted.
In bacterium b 2 , the CRISPR/Cas9 inserting rule p i × (g r , g m ) is used to insert gene g r between neighboring genes g r and g m . In this way, the number of gene g r of bacterium b 2 is increased by 1, which simulates the number in register r being increased by 1. We note that there is a unique position at which gene g r can be inserted with the context of neighboring g r and g m . Table 2. Rules in each bacterium of system Π.

Sim.
Rules Bac. l 13 (ATP-p 13 p null , b 1 /b 2 , ATP-p 13 p null ) b 1 p 13 × (g 2 , g m ), (ATP-p null , b 2 /b 1 , ATP-p 18 p null ), (ATP-p 13 p null , b 2 /b 1 , ATP-p 19  By using the CRISPR/Cas9 inserting rule, plasmid p i is consumed, and plasmid p s i and ATP remain in bacterium b 2 . The conjugation rule in bacterium b 2 is designed by the operation of the proceeding instruction l j . One of the following two cases occurs in bacterium b 2 .

•
If instruction l j is an ADD instruction, then bacterium b 2 has the conjugation rule (ATP-p si , b 2 /b 1 , ATP-p j p s j ). By using the rule, plasmids p j p s j and ATP are conjugated to bacterium b 1 . In this case, system Π starts to simulate the proceeding ADD instruction l j .

•
If instruction l j is a SUB instruction, then bacterium b 2 has the conjugation rule (ATP-p si , b 2 /b 1 , ATP-p j p null ), by which plasmids p j p null and ATP are transmitted to bacterium b 1 .
In this case, system Π starts to simulate the proceeding SUB instruction l j .
Therefore, system Π can correctly simulate the ADD instruction of M u . The system starts from bacterium b 1 having plasmid p i p s i and ATP, which are transmitted to bacterium b 2 by the conjugation rule. In bacterium b 2 , the number of gene g r in chromosomal DNA is increased by 1 using the CRISPR/Cas9 gene inserting rule, and plasmids p j p s j (if the proceeding instruction l j is an ADD instruction) or p j p null (if the proceeding instruction l j is a SUB instruction) are transmitted to bacterium b 1 , which means that system Π starts to simulate instruction l j .
2 g m g 3 g m g 4 g m g 5 g m g 6 g m g 7 g m b 2 Figure 3. The transition of system Π by reading input information encoded by g(x) copies of genes g 1 and y copies of gene g 2 through input bacterium b 2 .
Simulating the SUB instruction: l i : (SUB(r), l j , l k ).
We suppose at a certain computation step that system Π has to simulate a SUB instruction l i : (SUB(r), l j , l k ). For any SUB instruction l i , plasmid p i of the form p i = (cas9, gRN A delete g r ) is associated in system Π. In bacterium b 1 , there are plasmids p i p null and ATP such that the conjugation rule (ATP-p i p null , b 1 /b 2 , ATP-p i p null ) can be used. In bacterium b 2 , it has the following two cases.
-If there is at least one gene g r existing between neighboring genes g r and g m in chromosomal DNA of bacterium b 2 (corresponding to the case that the number stored in register r is n > 0), then the CRISPR/Cas9 deleting rule p i × (g 1 , g m ) is used to delete one copy of gene g r from chromosomal DNA. This simulates the number stored in register r being decreased by 1. By consuming plasmid p i , bacterium b 2 retains plasmid p null and ATP such that a conjugation rule (ATP-p null , b 2 /b 1 , ATP-p j p s j ) or (ATP-p null , b 2 /b 1 , ATP-p j p null ) is used, which depends on whether the proceeding instruction would be an ADD or a SUB instruction. In this way, plasmids p j p s j or p j p null ) and ATP are transmitted to bacterium b 1 . The system starts to simulate instruction l j .
-If there is no gene g r existing between neighboring genes g r and g m in chromosomal DNA of bacterium b 2 (corresponding to the case that the number stored in register r is 0), then the CRISPR/Cas9 deleting rule p i × (g 1 , g m ) cannot be used, but a conjugation rule (ATP-p i p null , b 2 /b 1 , ATP-p k p s k ) or (ATP-p i p null , b 2 /b 1 , ATP-p k p null ) is able to be used. Plasmids (p k p s k or p k p null ) and ATP are conjugated to bacterium b 1 , which means the system starts to simulate instruction l k .
We note that when plasmids p i p null are conjugated to bacterium b 2 from bacterium b 1 , it may happen that both the CRISPR/Cas9 deleting rule p i × (g 1 , g m ) and (ATP-p i p null , b 2 /b 1 , ATP-p k p s k ) (or (ATP-p i p null , b 2 /b 1 , ATP-p k p null )) can be used. In this case, the CRISPR/Cas9 deleting rule p i × (g 1 , g m ) will be applied because of the fact that it has priority over the plasmid transferring rule.
The simulation of a SUB instruction is correct: System Π starts from bacterium b 1 having plasmid p i p null and ATP and ends with plasmid p j p s j or p j p null and ATP (if the number stored in register r is n > 0) to start the simulation of instruction l j ; otherwise it ends with plasmid p k p s k or p k p null and ATP (if the number stored in register r is 0) to start the simulation of instruction l k .
Simulating the halt instruction: l h : HALT.
When register machine M u reaches the halt instruction l h : HALT, the computation of register machine M u halts. At that moment, bacterium b 1 in system Π holds plasmids p h p s h and ATP, and the conjugation rule (ATP-p h p sh , b 1 /b 2 , ATP-p h p s h ) can be used. By using the rule, plasmids p h p s h and ATP are transmitted to bacterium b 2 ; no gene can be edited by plasmid p h , and no rule can be used. Hence, the computation of system Π finally halts.
The number of gene g 0 in chromosomal DNA of bacterium b 2 encodes the number stored in register 0 of M u . If the number stored in register 0 is n > 0, then there are n + 1 copies of gene g 0 in chromosomal DNA of bacterium b 2 . The computational result can be obtained by counting the number of gene g 0 in chromosomal DNA of bacterium b 2 .
From the above description of system Π and its work, it is clear that system Π can simulate each computation of M u . We can check that the constructed system Π has This gives, in total, 2 bacteria, 34 plasmids, and 9 genes. This concludes the proof.

A Small Universal BP System as a Number Generator
In this section, we construct a small universal BP system as a number generator. A BP system Π u is universal if, given a fixed admissible enumeration of the unary partial recursive functions (ϕ 0 , ϕ 1 , . . .), there is a recursive function g such that for each natural number x, whenever we input the number g(x) in Π u , the set of numbers generated by the system is equal to {n ∈ N|ϕ x (n) is defined}. In other words, after introducing the "code" g(x) of the partial recursive function ϕ x in the form of g(x) copies of certain genes in chromosomal DNA of the input bacterium, the BP system generates all numbers n for which ϕ x (n) is defined.
System Π u has the same topological structure, plasmids, and evolution rules as system Π constructed in Section 3.1, but the input bacterium is b 2 and the output bacterium is b 1 . Differently from the universal computing devices considered in Section 3.1, the strategy to simulate a universal register machine as a number generator is as follows.
Step 1. The output bacterium b 1 initially has n copies of gene g m .
Step 2. System Π u starts by loading g(x) copies of gene g 1 and n copies of gene g 2 in the input bacterium b 2 .
Step 3. The computation of Π u is activated by using plasmid p 0 p null to simulate the register machine M u from Figure 2, with g(x) stored in register 1, and number n stored in register 2.
If the computation in register machine M u halts, instruction σ l h can finally be activated. To simulate register machine M u reaching the HALT instruction, system Π u holds plasmids p h p s h and transmits them to bacterium b 2 . After this, system Π u halts, as no rule can be used in bacterium b 2 . When the system halts, the number of gene g m in the output bacterium b 1 is the computational result, which is exactly the number n. Hence, the number n can be computed/generated by system Π u .
The difference between systems Π and Π u is the loading input information process. The initial configuration and transition of system Π u by reading input signals encoded by g(x) copies of genes g 1 and n copies of gene g 2 through input bacterium b 2 are shown in Figure 4.
2 g m g 3 g m g 4 g m g 5 g m g 6 g m g 7 g m b in Figure 4. The initial configuration and transition of system Π u by reading input information encoded by g(x) copies of genes g 1 and n copies of gene g 2 through input bacterium b 2 .
We can check that the constructed system Π u has This gives, in total, 2 bacteria, 34 plasmids, and 9 genes. Therefore, we have the following theorem.

Theorem 2.
There is a Turing universal BP system with 2 bacteria and 34 plasmids that can compute a Turing-computable set of natural numbers.

Conclusions
In this work, we construct two small universal BP systems. Specifically, it is obtained that a BP system with 2 bacteria, 34 plasmids, and 9 genes is universal for both computing recursively enumerable functions and computing/generating a family of sets of natural numbers. It is obtained that 34 plasmids are sufficient for constructing Turing universal BP systems. This provides theoretical support as well as paradigms using a reasonable number of bacteria and plasmids to construct powerful bacterial computers.
Following the research line, finding smaller universal BP systems deserves further research. A possible way to slightly decrease the number of plasmids used in small universal BP systems is using code optimization, exploiting some particularities of the register machine M u . For example, as considered in [25], for the sequence of two consecutive ADD instructions l 17 : (ADD(2), l 21 ) and l 21 : (ADD(3), l 18 ), without any other instruction addressing the label l 21 , the two ADD modules can be combined. However, a challenging problem regards what the minimum size of a universal BP system is-in other words, what the borderline between universality and non-universality is. Characterization of universality by BP systems is expected. A balance between the number of bacteria and plasmids in universal BP systems can be considered, that is, using more bacteria to reduce the number of plasmids.
It is worth developing the applications of BP systems. Bio-inspiring computing models perform well in computations, particularly in solving computational complex problems in feasible time [34][35][36]. It is of interest to use BP systems to solve computationally hard problems. Some specific applications using BP systems would be of interest to researchers from biological fields.
In artificial intelligence, there are many bio-inspired algorithms (see, e.g., [37,38]). It is worth designing bacteria-computing-inspired algorithms or introducing bacteria computing operators in classical algorithms. Additionally, it would be meaningful to construct powerful bacterial computers or computing devices in biological labs.