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.8
  • 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.0a1.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stickydesign-0.9.0a1-py3-none-any.whl (41.3 kB view details)

Uploaded Python 3

File details

Details for the file stickydesign-0.9.0a1.tar.gz.

File metadata

  • Download URL: stickydesign-0.9.0a1.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for stickydesign-0.9.0a1.tar.gz
Algorithm Hash digest
SHA256 a0d635df060bf4295b674ee6ac5d216af775f6dc13bca9e87ae5d067b907b743
MD5 43ad13706f9f24817c9e6587ff8f26de
BLAKE2b-256 9d38e9683338c38cd0ad9b20914524cb6e9e7cd92d7886532418a5ccdce3d356

See more details on using hashes here.

File details

Details for the file stickydesign-0.9.0a1-py3-none-any.whl.

File metadata

  • Download URL: stickydesign-0.9.0a1-py3-none-any.whl
  • Upload date:
  • Size: 41.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for stickydesign-0.9.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 388c105fcd699a7e4c3ccfa1180de081f5f0bcda2e0dd164a649c1a881c5cd95
MD5 cac99b82575071b663892ca518bc43c4
BLAKE2b-256 79e2571e7bb395688f6042cddd63c35531e90640feaa3007caf9447c2eb20645

See more details on using hashes here.

Supported by

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