Coder Social home page Coder Social logo

yibit / dna-3d-engine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pallada-92/dna-3d-engine

0.0 0.0 0.0 119 KB

3d engine implementation in DNA code!

Home Page: https://observablehq.com/@pallada-92/3d-engine-in-dna-code

License: GNU General Public License v3.0

dna-3d-engine's Introduction

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

How to deploy

  1. Synthesize the oligonucleotides from the 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

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
  1. 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

  2. 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

  3. 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.

  4. 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.

  5. 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

  6. Inigo Quilez
    https://www.iquilezles.org/www/index.htm
    Introduction to Raymarching Signed Distance Functions

dna-3d-engine's People

Contributors

pallada-92 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.