==========
Python-dna
==========


Python dna provide classes and functions for molecular biology using python.
Notably, PCR, cut and paste cloning and homologous recombination between linear
DNA fragments are supported. Most functionality is implemented as methods for
the double stranded DNA sequence record class "drecord", which is a subclass of
the `Biopython <http://biopython.org/wiki/Main_Page>`_. SeqRecord class.

Python-DNA might be useful to automate the simulation of
`sub cloning <http://en.wikipedia.org/wiki/Subcloning>`_ experiments using
python. This could be helpful to generate examples for teaching purposes.

Python-dna was designed to semantically imitate how sub cloning experiments are
typically documented in Scientific literature. Python-dna code describing a
sub cloning is reasonably compact and meant to be easily readable.

One use case for Python-dna is to create a sort of executable documentation
describing a subcloning experiment. The Python-dna code unambiguously describe
a sub cloning experiment, and can be executed to yield the sequence of the
of the resulting DNA molecule.

Typical usage at the command line could look like this::

    #!/usr/bin/env python

    >>> import pydna
    >>> seq = pydna.dseq("GGATCCAAA","TTTGGATCC",ovhg=0)
    >>> seq
    dseq(-9)
    GGATCCAAA
    CCTAGGTTT
    >>> from Bio.Restriction import BamHI
    >>> a,b = seq.cut(BamHI)
    >>> a
    dseq(-5)
    G
    CCTAG
    >>> b
    dseq(-8)
    GATCCAAA
        GTTT
    >>> a+b
    dseq(-9)
    GGATCCAAA
    CCTAGGTTT
    >>> b+a
    dseq(-13)
    GATCCAAAG
        GTTTCCTAG
    >>> b+a+b
    dseq(-17)
    GATCCAAAGGATCCAAA
        GTTTCCTAGGTTT
    >>> b+a+a
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/pydna/dsdna.py", line 217, in __add__
        raise TypeError("sticky ends not compatible!")
    TypeError: sticky ends not compatible!
    >>>

System Requirements
===================

- Python 2.7, see <http://www.python.org>

- NumPy, see <http://numpy.scipy.org install> NumPy BEFORE
  installing Biopython.

- `Biopython >= 1.60 <http://biopython.org/wiki/Main_Page>`_.

- setuptools 0.6c11 <http://pypi.python.org/pypi/setuptools>

Python 2.x
----------

Versions other than 2.7 has not been tried with this software.

Python 3.x
----------

This code has not been tried on any version of python 3.

Installation
============

Source
------

**Make sure that Python 2.7.x is installed correctly**

Open the Python-dna source code directory (containing the setup.py file) in
terminal and type:

    python setup.py build <enter>
    python setup.py test <enter>
    sudo python setup.py install <enter>

If you need to do additional configuration, e.g. changing the base
directory, please type `python setup.py`, or see the documentation for
Setuptools.

Binary distribution
-------------------

Binary installers for the Microsoft Windows Operating systems (XP,7)
are provided.

Distribution Structure
======================

README.txt   -- This file.

NEWS.txt     -- Release notes and news

LICENSE.txt  -- What you can do with the code.

CONTRIB      -- An (incomplete) list of people who helped Biopython in
                one way or another.

DEPRECATED   -- Contains information about modules in Biopython that are
		removed or no longer recommended for use, and how to update
		code that uses those modules.

MANIFEST.in  -- Tells distutils what files to distribute

setup.py     -- Installation file.

pydna/       -- The actual code.

Doc/         -- Documentation.

Scripts/     -- Miscellaneous, possibly useful, standalone scripts

tests/       -- Regression testing code

