Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pallada-92/dna-3d-engine

3d engine implementation in DNA code!
https://github.com/pallada-92/dna-3d-engine

3d 3d-engine biology chemical-kinetics chemical-reaction-networks chemical-reactions cube dna in-vitro molecular-biology molecular-programming piperine raymarching real-reactive-programming strand-displacement

Last synced: 12 days ago
JSON representation

3d engine implementation in DNA code!

Awesome Lists containing this project

README

        


CubeCRN logo

cube3d.dna




The most advanced and compact 3d engine ever implemented in DNA code.



environment: in vitro
platform: DNA | TMSD
license: GPL-v.3.0+


lint status
tests status
coverage
total lines
bundle size





## Getting started

* [Getting started tutorial on ObservableHQ](https://observablehq.com/d/45f2227392644567)
* [Try this in your browser on ObservableHQ](https://observablehq.com/d/5288cbf0a5de42b2#3d-engine)

## How to deploy

1. Synthesize the oligonucleotides from the [cube3d.dna](./cube3d.dna) file.
2. Arrange the test tubes as shown in the diagram below.
3. Don't forget to provide the initial concentrations according to the table below.
4. Use a pipette to encode the position (row and column) of each tube to start the computation.

Environment variables

```
q = 0.01
cxtm = 0.606
axp = 0.606
cytm = 0.898
ayp = 0.898
cztm = 1.243
azp = 1.243
mxyzm = 0.3
nx = 0.036 + 0.555 Col + 0.147 Row
ny = 0.853 + -0.517 Row
nz = 0.737 + -0.270 Col + 0.302 Row
```



## Testing

1. Pick the fluorophore of your favorite color and attach it to the `Strand R0`, so that it activates when the `R` species are being produced.
2. Use a light source with a specific wavelength (depending on the fluorophore you've chosen) to render the result.



Disclaimer: perhaps it would not be a good idea to try this experiment in a real lab, because it will cost you a lot of money and most likely won’t work as intended the first time.

## Ports to other languages

* [SQLite version](https://observablehq.com/@pallada-92/sql-3d-engine)
* [Excel version](https://observablehq.com/@pallada-92/excel-3d-engine-emulator)
* [JavaScript version](https://observablehq.com/d/940d2895b3e9e611)
* [Russian (Русский)](https://habr.com/ru/post/437168/)

## Gallery





Ray marching common implementation






Ray marching differential form used here









Simplified animation of the toehold mediated strand displacement technique (based on supplementary materials from [2])





The types of oligonucleotides required for a single reaction (based on supplementary materials from [2])







Data flow graph of the JS implementation.




Species interaction graph of this implementation.








Unminified source code of this implementation which just comprises plain reactions with a few macros.
The minifier was written in Wolfram Language specially for this project.







CRN++ source code for comparison (CRN++ is not used in this implementation).








10 reactions after the minification used in this project.
Since the piperine compiler doesn't support more than 2 products on the right-hand side, the reactions were split.







CRN++ 70 reactions output for comparison (CRN++ is not used in this implementation).

## Building from source

1. Install the piperine compiler by the DNA and Natural Algorithms Group.
2. Run the following command

```
piperine-design cube3d.crn --maxspurious 0.765
```

3. Wait 2-3 hours for the compilation results.

## References

1. David Soloveichik, Georg Seelig and Erik Winfree

DNA as a universal substrate for chemical kinetics

Proceedings of the National Academy of Sciences Mar 2010, 107 (12) 5393-5398; DOI: 10.1073/pnas.0909380107

1. Niranjan Srinivas, James Parkin, Georg Seelig, Erik Winfree and David Soloveichik

Enzyme-free nucleic acid dynamical systems

Science 358, eaal2052 (2017).

Some images were taken from supplementary materials

1. Chalk, Cameron, Niels Kornerup, Wyatt Reeves, and David Soloveichik.

Composable rate-independent computation in continuous chemical reaction networks.

International Conference on Computational Methods in Systems Biology, pp. 256-273. Springer, Cham, 2018.

1. Chen, Ho-Lin, David Doty, and David Soloveichik.

Rate-independent computation in continuous chemical reaction networks.

Proceedings of the 5th conference on Innovations in theoretical computer science. 2014.

1. Marko Vasic, David Soloveichik and Sarfraz Khurshid

CRN++: Molecular Programming Language

Natural Computing (2020) 19:391–407 DOI: 10.1007/s11047-019-09775-1

CRN++ on GitHub

1. Inigo Quilez

https://www.iquilezles.org/www/index.htm

Introduction to Raymarching Signed Distance Functions