**********
FreezerBox
**********

.. image:: https://img.shields.io/pypi/v/freezerbox.svg
   :alt: Last release
   :target: https://pypi.python.org/pypi/freezerbox

.. image:: https://img.shields.io/pypi/pyversions/freezerbox.svg
   :alt: Python version
   :target: https://pypi.python.org/pypi/freezerbox

.. image:: https://img.shields.io/readthedocs/freezerbox.svg
   :alt: Documentation
   :target: https://freezerbox.readthedocs.io/en/latest/?badge=latest

.. image:: https://img.shields.io/github/workflow/status/kalekundert/freezerbox/Test%20and%20release/master
   :alt: Test status
   :target: https://github.com/kalekundert/freezerbox/actions

.. image:: https://img.shields.io/coveralls/kalekundert/freezerbox.svg
   :alt: Test coverage
   :target: https://coveralls.io/github/kalekundert/freezerbox?branch=master

.. image:: https://img.shields.io/github/last-commit/kalekundert/freezerbox?logo=github
   :alt: GitHub last commit
   :target: https://github.com/kalekundert/freezerbox

FreezerBox is a tool for keeping track of biochemistry lab reagents such as 
plasmids, oligos, proteins, buffers, etc.  It emphasizes keeping track of *how* 
each construct was made, and aims to be compatible with existing 
reagent-management systems.

Example
=======
- Your want a tool to better manage your plasmids, but you don't want to spend 
  a bunch of time re-entering the information for your existing plasmids, which 
  is stored in a big Excel spreadsheet.  After installing FreezerBox, you 
  quickly  configure it to recognize the column headers in your spreadsheet.  
  Nothing about your existing spreadsheet needs to change.

- You just designed primers to clone a new plasmid.  You enter both the primers 
  and the plasmid into your spreadsheet.  While it's fresh in your head, you 
  also describe how the plasmid will be made in a column labeled 
  "Construction".  The description might look like::

      INV: template=p2 primers=o2,o3

  This syntax indicates that the plasmid is constructed by inverse PCR ("INV") 
  using the plasmid "p2" as a template and the oligos "o1" and "o2" as primers.

- You just received the primers you designed last week, but you don't remember 
  exactly how you were planning to use them.  You use FreezerBox---in 
  conjunction with `stepwise <https://github.com/kalekundert/stepwise>`__---to 
  generate an protocol specifying all the relevant details: volumes, 
  concentrations, construct names, etc.  If you are making several constructs, 
  the protocol will even group similar constructs and create master mixes of 
  common reagents when possible::

      $ stepwise make p3
      March 27, 2020

      $ stepwise make p3

      1. Prepare 10x primer mix [1]:

         Reagent   Stock    Volume
         ─────────────────────────
         o2       100 µM   0.50 µL
         o3       100 µM   0.50 µL
         water             9.00 µL
         ─────────────────────────
                          10.00 µL

      2. Setup 1 PCR reaction and 1 negative control [2]:

         Reagent           Stock    Volume
         ─────────────────────────────────
         water                     3.00 µL
         p2             20 pg/µL   1.00 µL
         primer mix          10x   1.00 µL
         Q5 master mix        2x   5.00 µL
         ─────────────────────────────────
                                  10.00 µL

      3. Run the following thermocycler protocol:

         - 98°C for 30s
         - Repeat 35x:
           - 98°C for 10s
           - 60°C for 20s
           - 72°C for 3 min
         - 72°C for 2 min

      4. Run 1 ligation reaction:

         Reagent              Stock    Volume
         ────────────────────────────────────
         water                        6.75 µL
         T4 ligase buffer       10x   1.00 µL
         T4 PNK             10 U/µL   0.25 µL
         T4 DNA ligase     400 U/µL   0.25 µL
         DpnI               20 U/µL   0.25 µL
         PCR product       50 ng/µL   1.50 µL
         ────────────────────────────────────
                                     10.00 µL

         - Incubate at room temperature for 1h.

      Notes:
      [1] For resuspending lyophilized primers:
          100 µM = 10 µL/nmol

      [2] For diluting template DNA to 20 pg/µL:
          Dilute 1 µL twice into 7*sqrt(DNA) µL

Installation
============
Install FreezerBox using ``pip``::

    $ pip install freezerbox

Usage
=====
More details coming soon...
