Skip to main content

StickyDesign DNA Tile Sticky End Package

Project description

Documentation Status Codecov GitHub Workflow Status PyPI

The StickyDesign Sticky End Sequence Designer

Introduction

StickyDesign is a Python package for designing sticky end sequences for DNA tile systems, especially systems using DX and other tile structures where sticky ends in a single tile are separated by double-stranded regions (better support for single stranded tiles is still under development).

Requirements

StickyDesign is implemented as a Python library that can easily be used interactively through an interactive Python environment like iPython[1]. It uses portions of the general scientific computing ecosystem for Python, and also uses a small Python C extension to greatly accelerate energetics calculations. As such, it likely requires a minimum:

  • Python >= 3.9
  • Numpy
  • A working C compiler setup
  • Python development headers

Installation

The easiest way to install stickydesign is via Pip.

To install via PyPI (stable releases, may be outdated):

pip install stickydesign

To install from github's main branch (stable, more up to date):

pip install git+https://github.com/DNA-and-Natural-Algorithms-Group/stickydesign.git

To install from github's main development branch (unstable):

pip install git+https://github.com/DNA-and-Natural-Algorithms-Group/stickydesign.git@dev

Alternatively, normal python installation methods (easy_install, setup.py) may be used.

Installation requires a working C compiler so that energy model speedups can be compiled. If compilation does not work for you, please let us know.

Use

The stickydesign package has inline documentation available for all of its functions, which provide details on the use of each function.

Lists of sticky end sequences are held in endarray classes. These contain the sequences themselves, the adjacent bases on both sides (the base itself on the end side, the complement of the base on the other side), and a end type. The end type specifies what the edges of the ends look like, and currently has three possible values:

  • 'DT', for ends where the 5' end continues to a double-stranded (D) region and the 3' end is terminal (T), and
  • 'TD', for ends where the 5' end is terminal (T), and the 3' end continues to a double-stranded region (D). (uses EnergeticsDAOE energy model)
  • 'S', for 'ends' that are really just sequences, where nothing is assumed about the adjacent regions. (uses EnergeticsBasic energy model)

As examples, a usual DAO-E tile will have two DT ends and two TD ends, while a DAO-O tile will have all of the same type (eg, NAoMI-B has four TD ends). Other end types, to support things like single-stranded tiles and toeholds for branch migration, are still being considered.

To get end and complement sequences along with their adjacent nucleotide, use the .ends or .comps properties of the class. (For 'S', these will just return the sequence and complement.)

For usual sequence design, the easyends function provides a simple but configurable interface to the sequence design code. At its simplest level, for example, trying to design ten sticky ends (each with a complement included) of type DT, and using the defaults for target interaction energy and maximum non-orthogonal binding, you might do the following (in iPython, with In showing user input and Out showing Python output):

In [1]: import stickydesign

In [2]: stickydesign.easyends('DT',5,number=10, energetics=stickydesign.EnergeticsDAOE())
WARNING:root:Calculated optimal interaction energy is 8.354.
Out[2]: <endarray (10): type DT; ['accgtat', 'tcgaaga', 'gaaacgt',
				'actgtca', 'ctgtgac', 'catgacc', 'cgttcaa', 
				'cgtactg', 'cggtatg', 'cgaacaa']>
				
In [3]: Out[2].ends
Out[3]: <endarray (10): type DT; ['accgta', 'tcgaag', 'gaaacg', 
	'actgtc', 'ctgtga', 'catgac', 'cgttca', 'cgtact', 'cggtat', 'cgaaca']>

In [4]: Out[2].comps
Out[4]: <endarray (10): type DT; ['atacgg', 'tcttcg', 'acgttt', 
	'tgacag', 'gtcaca', 'ggtcat', 'ttgaac', 'cagtac', 'catacc', 'ttgttc']>

To get an array of interactions between an set of sticky ends, use the energy_array_uniform function. This array can then be plotted with matplotlib:

In[5]: energyarray = stickydesign.energy_array_uniform( Out[2], 
	stickydesign.EnergeticsDAOE() )
	
In[6]: import matplotlib.pyplot as pyplot

In [7]: pyplot.rc('image',interpolation='nearest')

In [8]: pyplot.imshow(energyarray)
Out[8]: <matplotlib.image.AxesImage at 0x10c23c450>

In [9]: colorbar()
Out[9]: <matplotlib.colorbar.Colorbar instance at 0x10c1d83b0>

For 'S' type ends, use EnergeticsBasic in place of EnergeticsDAOE; this is now the default on easyends.

To change parameters for the energetics classes, see the documentation for those classes: for example, temperature (in Celsius) can be specified using, eg, EnergeticsBasic(temperature=33).

About and citations

Stickydesign was developed at the Winfree lab at Caltech (https://dna.caltech.edu) and is maintained by Constantine Evans (https://evansfmm.org/cge).

You can cite stickydesign with the following paper:

@article{Evans_2013, title={DNA Sticky End Design and Assignment for Robust Algorithmic Self-assembly}, ISBN={http://id.crossref.org/isbn/978-3-319-01928-4}, ISSN={1611-3349}, url={http://dx.doi.org/10.1007/978-3-319-01928-4_5}, DOI={10.1007/978-3-319-01928-4_5}, journal={Lecture Notes in Computer Science}, publisher={Springer Science + Business Media}, author={Evans, Constantine G. and Winfree, Erik}, year={2013}, pages={61–75}}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stickydesign-0.9.2.tar.gz (39.2 kB view details)

Uploaded Source

Built Distribution

stickydesign-0.9.2-py3-none-any.whl (43.4 kB view details)

Uploaded Python 3

File details

Details for the file stickydesign-0.9.2.tar.gz.

File metadata

  • Download URL: stickydesign-0.9.2.tar.gz
  • Upload date:
  • Size: 39.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for stickydesign-0.9.2.tar.gz
Algorithm Hash digest
SHA256 1e5166cf1b95893341d8ddb0a1d0c0e9580cd0dc8cade3f0e3f35306a692b6d3
MD5 0dda08a04bb1b26318a48854205ec434
BLAKE2b-256 c8e45271ee1b3cf713e5e3bc2f864099b0caaf1ad605a8d16448091150b77b05

See more details on using hashes here.

File details

Details for the file stickydesign-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: stickydesign-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 43.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for stickydesign-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c5937de5ccfc19df2b61d09b466657cf3fc48e7f33cc65bd10a65978d8172434
MD5 e1dd84e021aec6d478d77a311ee5722e
BLAKE2b-256 3703911243a424e3de01d9e15ad570665ac08ef875474290e3690a4f45754ebf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page