Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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!
- Host: GitHub
- URL: https://github.com/pallada-92/dna-3d-engine
- Owner: pallada-92
- License: gpl-3.0
- Created: 2020-11-14T22:23:06.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2020-11-29T18:08:16.000Z (almost 4 years ago)
- Last Synced: 2024-08-01T22:04:44.178Z (4 months ago)
- Topics: 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
- Homepage: https://observablehq.com/@pallada-92/3d-engine-in-dna-code
- Size: 116 KB
- Stars: 547
- Watchers: 15
- Forks: 26
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
cube3d.dna
The most advanced and compact 3d engine ever implemented in DNA code.
## 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.09093801071. 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 materials1. 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 GitHub1. Inigo Quilez
https://www.iquilezles.org/www/index.htm
Introduction to Raymarching Signed Distance Functions