# IGEM:UC Berkeley/2006/LogicIntro

*dlk_07/22/2006*

A work in progress:

- provide an overview of what logic gates are, how they are used in a digital context, how they can be implemented in bacterial cells
- provide overview of graphical models and Artificial Neural Networks, show that our addressable communication scheme can implement ANNs
- show that NAND is an interesting 'hello world' function to compute using an ANN
- detail the implementation will&john&chris came up with for the NAND gate
- define some of the interesting questions: does it scale? is this a good approximation of an ANN? what kind of ANN is it? Can it generalize to real graphical models? How would you train an ANN/graphical model in bacteria? How probabilistic / deterministic is it? How asynchronous is it? What kind of parallelism is going on? How hard is it to get a multi-layer network built? How much does it deviate from the mathematical model of ANNs?

Notes on presentation:

- It's fun to talk about graphical models, but the discussion is clearer if we start from the bottom with the conjugation, don't get bogged down in the cs theory
- NAND is universal
- NAND is being computed using an ANN model
- Differences between the proof-of-concept small molecue system, one lock/key system, and two lock/key systems, pragmatic concerns
- There is no training method
- We've implicitly made decisions about HI/LOW values
- We'll have to boost the signal a lot to string together into multilayer networks
- All depends on the size of the lock/key space, else cross talk
- Chris's name 'bacterial brains' is cool

We hope to show computation of basic logic functions using addressable communication.

- Logic Gates

Logic gates perform a simple mathematical function on input signals to produce an output signal. Logic gates perform digital calculations, meaning there are only two possible values, a high or on state, and a low or off state. The three basic logic gates are the AND gate, the OR gate, and the NOT gate.

The NOT gate is the simplest logic gate, with a single input and single output. The gate inverts the input. If the input signal is on, the output signal is off, if the input signal is off, the output signal is on.

The AND gate is on only if both of its input signals are on.

The OR gate is on if either one, or if both, of its input signals are on.

More complicated logic functions

Logic gates can be strung together by connecting the output of one logic gate to the input of another logic gate. Digital devices, such as computers, perform all their actions by stringing together logic gates.

- NAND and NOR gates

A NAND gate is an AND gate with a NOT gate attached to the output. The NOR gate is an OR gate with a NOT gate attached to the output. Both NAND and NOR gates are 'logically sufficient' meaning that using only NAND gates (or NOR gates) a designer can build a circuit to compute any possible digital function. This means that using only a NAND gate, you can build a NOT gate, an AND gate, and an OR gate, and by extension, all computable functions. If you can build either a NAND or NOR gate, then in principle, you have all the building blocks needed to build a computer.

- State

The ablity to store and recall information is often referred to as a system having 'state'. Logic gates by themselves have no memory and are termed stateless. They only have access to their input signals. Logic gates can be used to build small memory devices called flip flops. By stringing together a collection of logic gates, a designer can build a circuit that remembers an input value and continuously outputs it until a specific 'erase' signal is given.

However, in our scheme of addressable communication, building flip flops seems difficult and more trouble than it is worth. A traditional flip flop is able to store one 'bit' of information. However, each cell is capable of storing many bits of information. By implementing our logic gates on top of a graphical model formalism, we can encode both state and computational function into our bacterial networks.

- Synchronous v asynchronous logic

The vast majority of digital devices have a 'clock' which is a specialized signal that is sent at the same time to all logic gates. Each time the clock sends out a new signal, all of the logic in a system performs its action. In this manner, all changes to a system happen synchronously at the same time.

Not all digital systems are synchronous, and extremely talented circuit designers occasionally design asynchronous systems for difficult applications. In an asynchronous system, logic gates update their output as soon as they notice a change on their input signals. Each part of the system is changing and updating at a different speed.

- Parallelism

- Artificial Neural Networks

An Artificial Neural Network (ANN) is a biologically inspired computing algorithm. Loosely based off the methods used in the human brain, an ANN is composed of nodes and connections between the nodes. Each connection between nodes carries a signal from one node to another node, and each connection is one direction. Each node has at least one, and potentially many input connections. The internal logic of the node sums the strength of the input signals, and if the sum is above threshold, activates the output signals.