Skip to content

Commit

Permalink
Merge pull request #1 from DNA-and-Natural-Algorithms-Group/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
bad-ants-fleet authored Jan 11, 2021
2 parents 5dde218 + 225aa51 commit 4549340
Show file tree
Hide file tree
Showing 190 changed files with 5,073 additions and 8,970 deletions.
18 changes: 18 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
language: python
python:
- "3.8"
- "3.9"

# command to install dependencies
install:
- pip install -r requirements.txt
- pip install pytest-cov pytest
- pip install codecov
- pip install .

# command to run tests
script:
- pytest --cov-report term --cov=nuskell/

after_success:
- codecov
3 changes: 1 addition & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
The MIT License (MIT)

Copyright (c) 2010-2017 Seung Woo Shin, Qing Dong, Robert Johnson,
Stefan Badelt, Erik Winfree <[email protected]>
Copyright (c) 2010-2020 Stefan Badelt, Seung Woo Shin, Robert Johnson, Qing Dong, Erik Winfree <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
60 changes: 36 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,62 @@
# Nuskell: Nucleic acid strand displacement compiler
# Nuskell: nucleic acid strand displacement compiler

``Nuskell`` compiles formal chemical reaction networks (CRNs) into domain-level
strand displacement (DSD) systems. It provides a library of ``translation
schemes`` (i.e. variations of CRN-to-DSD translations) to exploit the diversity
of DSD circuits implementing the same CRN.
[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/DNA-and-Natural-Algorithms-Group/nuskell)](https://github.com/DNA-and-Natural-Algorithms-Group/nuskell/tags)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/DNA-and-Natural-Algorithms-Group/nuskell?include_prereleases)](https://github.com/DNA-and-Natural-Algorithms-Group/nuskell/releases)
[![PyPI version](https://badge.fury.io/py/nuskell.svg)](https://badge.fury.io/py/nuskell)
[![PyPI - License](https://img.shields.io/pypi/l/nuskell)](https://opensource.org/licenses/MIT)
[![Build Status](https://travis-ci.com/DNA-and-Natural-Algorithms-Group/nuskell.svg?branch=master)](https://travis-ci.com/github/DNA-and-Natural-Algorithms-Group/nuskell)
[![Codecov branch](https://img.shields.io/codecov/c/github/DNA-and-Natural-Algorithms-Group/nuskell/master)](https://codecov.io/gh/DNA-and-Natural-Algorithms-Group/nuskell)

In order to proof/disproof the correctness of a particular translation,
``Nuskell`` includes the domain-level reaction enumerator ``Peppercorn`` [Grun
et al. (2014)] to find intended and unintended reaction pathways and then
provides two notions of stochastic trajectory-type CRN equivalence:
bisimulation [Johnson et al. (2016)] and pathway decomposition [Shin et al. (2014)].
``Nuskell`` is software framework to compile formal chemical reaction networks
(CRNs) into domain-level strand displacement (DSD) systems. As there are many
ways to do such a translation, we provide a library of [translation schemes]
(i.e. variations of CRN-to-DSD translations) that the user can select from.

The domain-level reactions and their approximate rates can be exported in form
of an ODE system to simulate the dynamics of the compiled DSD network.
In order to proof/disproof the correctness of a particular translation,
``Nuskell`` includes the domain-level reaction enumeration package
[Peppercorn][] [[Badelt et al. (2020)]] and the CRN verification package
[crnverifier][].
Peppercorn finds intended and potentially unintended reaction pathways, the
crnverifier then checks if the implementation CRN is a correct implementation
of the formal CRN using the stochastic trajectory-type CRN correctness notions
of bisimulation [[Johnson et al. (2019)]] and pathway decomposition
[[Shin et al. (2019)]].

### Examples

Implement a formal CRN using a particular translation-scheme:

```
$ echo "A + B <=> X + Y; X -> A" | nuskell --ts scheme.ts --verify modular-bisimulation
$ echo "A + B <=> X + Y; X -> A" | nuskell --ts srinivas2017.ts --verify crn-bisimulation
```
for options see:
```
$ nuskell --help
```
## Translation Schemes
Detailed information about translation schemes can be found in the ``/schemes`` directory.
Detailed information about translation schemes can be found in the [translation
schemes] directory.

## Installation
```
$ python setup.py install
```
or
```
$ python setup.py install --user
```

## Documentation
A preview of the documentation for release v1.0 can be found at: [documentation].

## Version
0.5.1
0.8 -- basically a complete rewrite, python>=3.8 only.
* nuskell.dsdcompiler is now a subpackage to compile from CRN to DSD.
* crnverifier is now an independent package and therefore a dependency.
* enumeration interface updated to peppercornenumerator-v1.1.
* nuskell now uses the prototype objects provided by the dsdobjects library.

### Authors
- Stefan Badelt
- Seung Woo Shin
- Qing Dong
- Robert Johnson
- Stefan Badelt
- Qing Dong
- Erik Winfree

### License
Expand All @@ -60,9 +69,12 @@ Stefan Badelt, Seung Woo Shin, Robert F. Johnson, Qing Dong, Chris Thachuk, and


[//]: References
[Peppercorn]: <https://github.com/DNA-and-Natural-Algorithms-Group/peppercornenumerator>
[crnverifier]: <https://github.com/DNA-and-Natural-Algorithms-Group/crnverifier>
[translation schemes]: <https://github.com/DNA-and-Natural-Algorithms-Group/nuskell/tree/master/nuskell/dsdcompiler/schemes>
[Badelt et al. (2017)]: <https://doi.org/10.1007/978-3-319-66799-7_15>
[Grun et al. (2014)]: <https://arxiv.org/abs/1505.03738>
[Shin et al. (2014)]: <http://dna.caltech.edu/DNAresearch_publications.html#PathwayDecomposition>
[Johnson et al. (2016)]: <http://dna.caltech.edu/DNAresearch_publications.html#CRN-Bisimulation>
[Badelt et al. (2020)]: <https://doi.org/10.1098/rsif.2019.0866>
[Shin et al. (2019)]: <https://doi.org/10.1016/j.tcs.2017.10.011>
[Johnson et al. (2019)]: <https://doi.org/10.1016/j.tcs.2018.01.002>
[documentation]: <http://dna.caltech.edu/~badelt/nuskell/index.html>

16 changes: 7 additions & 9 deletions nuskell/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
##############################################
# Initiation of the nuskell compiler package #
##############################################
#
# nuskell/__init__.py
# NuskellCompilerProject
#
__version__ = "0.8"

__version__ = "0.5.1"

# Import the main interface to the compiler #
from nuskell.compiler import translate, genCRN
from nuskell.verifier import verify
from nuskell.interpreter.environment import NuskellExit
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())

Loading

0 comments on commit 4549340

Please sign in to comment.