[][src]Crate codenano

This crate allows one to design DNA molecules.

The following creates a strand zig-zagging between three helices, and outputs it to a file:

use codenano::*;
let mut design: Design<()> = Design::new();
for i in 0..3 {
   design.add_grid_helix(i, 0);
}
// Let's first design a strand.
design.strand(0, 0).to(31)
  .cross(1).to(10)
  .cross(2).to(21);
// Now its reverse complement:
design.strand(2, 21).to(10)
   .cross(1).to(31)
   .cross(0).to(0);
design.write_to("my_design.json").unwrap()

This library is compatible with the codenano-server crate, which watches changes made to a file and shows the result in 3D in a web browser. Additionally, the client part of that crate can run finite element simulations and display the secondary structure.

Modules

cadnano

Conversion to Cadnano format.

geometry

3D points and vectors

sequences

Extra tools for sequences (random completions, etc.)

transforms

Common geometric transforms on domains (most useful when working on grids or partial grids).

Structs

Design

The main type of this crate, describing a DNA design.

Domain

A domain, i.e. an interval of a helix.

DomainIter

An iterator over all positions of a domain.

Error

The Error type, which can contain any failure.

Helix

A DNA helix. All bases of all strands must be on a helix.

HelixId

Identity of a helix, useful for referring to it.

Parameters

DNA geometric parameters.

Strand

A DNA strand.

StrandId

Identity of a strand, useful for referring to it.

StrandRef

A pointer to a strand being built, containing a current domain and position.

Constants

M13_594

A cut version of the M13, which can be obtained with enzymes from the original genome (the M13_7249 one).

M13_7249

The sequence of the M13 bacteriophage, used for example for DNA Origami.