Home > splicerack

splicerack

Splicerack is a project mainly written in Python, it's free.

tools for analyzing DNA splicing languages

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

Splicerack README

Splicerack README

Table of Contents

  • 1 Background and motivation
    • 1.1 What is splicerack?
    • 1.2 What are DNA splicing languages?
    • 1.3 What can splicerack do?
    • 1.4 How does splicerack convert splicing systems to NFAs?
  • 2 Installation and use
    • 2.1 What do I need in order to setup splicerack?
      • 2.1.1 Python
      • 2.1.2 splicerack
      • 2.1.3 graphviz
      • 2.1.4 How do I use splicerack?

1 Background and motivation

1.1 What is splicerack?

splicerack aims to be a collection of tools to aid in the analysis of DNA splicing languages. splicerack is a student project written by an amateur, a fact which I will appreciate you bearing in mind while you read the source!

1.2 What are DNA splicing languages?

DNA splicing languages are formal languages which arise from the iterated splicing action of restriction enzymes on a set of initial strings. Here [pdf] is a good overview of the topic by Head and Pixton.

1.3 What can splicerack do?

Currently, splicerack can accept a splicing system as input and generate the NFA of the corresponding splicing language. Development is still active, and splicerack's features are in flux.

1.4 How does splicerack convert splicing systems to NFAs?

It follows the constructive proof given in the paper above. Any bugs are due to my implementation of the algorithm. Please be liberal with comments and criticism.

2 Installation and use

2.1 What do I need in order to setup splicerack?

2.1.1 Python

splicerack was written on Python2.6, but AFAIK it should not put up much of a fight against Python3 or 2to3.py. Please contact me if splicerack is giving your python version static.

2.1.2 splicerack

If cloning the repo is a live option for you, you probably know more about this stuff than I do, so use good judgment and act accordingly. Otherwise just download all files to an appropriately named folder.

2.1.3 graphviz

splicerack currently expects graphviz to be installed. If graphviz isn't installed on your Debian-based system, you can install it with:

sudo apt-get install graphviz

and if you don't have a Debian-based system, you probably know as much about getting it installed as I do. This page may help.

2.1.4 How do I use splicerack?

Currently, you would use splicerack if you had a splicing system and wanted to know its associated NFA. splicerack supposes you have the splicing system specified in what I will term Pixton format. In fact, splicerack is currently only a partial implementation of the Pixton format; certain features like delay do not work yet. Here is Pixton on the Pixton format, with my emendations:

You must supply an H system file.  This is just a text file; I used the
extension ".hs", but this is not necessary.  [The .hs extension is now better 
known for Haskell source.  Although I would currently advise against giving
your files that extension, splicerack will happily accept any extension you
choose.  It does require, however, that your file have an extension, 
otherwise it will not know what to call the postscript output.  --PON]

Blank lines and lines beginning with '#' are ignored.

The file is divided into sections by "headers", written inside [].  Here's
an annotated sample

--------------------

[parameters]
# in this section you specify the type, delay, and whether the system is
# symmetric (that is, 2-splicing instead of 1-splicing), as follows:
# type must be either non-reflexive or head:
type non-reflexive
# symmetric is either true (1) or false (0):
symmetric 1
# if non-reflexive then you need a delay
delay 2

[alphabet]
# splicerack is currently alphabet-agnostic.  You can specify one, but it will
# be ignored.  --PON
[rules]
# specify rules in the form u,v;w,z where u,v,w,z are any strings.  you can
# specify more than one rule on a line (separated by spaces)
# [rules should consist of lowercase letters, "1", and punctuation. --PON]
# you can write the empty string in a rule as "1" [and in no other way, so 
#far.  Don't represent the empty string with an actual empty string! --PON]
# examples:
a,bb;b,a  a,1;b,cd 

[axioms]
# the axioms.  if the empty string is an axiom, write it as "1". 
# [Haven't tested empty axioms yet.  --PON]
# you can specify more than one axiom per line (separated by spaces)
# examples:
a aab abc

Command line usage is as follows:

$./splicerack.py example.head

If all goes well, this should produce the postscript file example.ps in the current working directory, which can be examined with your favorite postscript viewer.

Author: Patrick O'Neill <[email protected]>

Date: 2011-02-06 18:03:48 EST

HTML generated by org-mode 6.30c in emacs 23