Changes to the fabfile
Use reflection to get DB models

While we transition to the new servers I will be making many migrations to the
database, things such as changing table types, making names of columns and
tables consistent, adding tables and columns, etc. In order to do this I'm using
a migration tool which is separate from the pipeline as the pipeline does not do
a good job with these sorts of changes. To prevent myself from having to worry
about keeping the model definitions up-to-date along with the code to use them,
I'm using reflection to generate the models. This way the truth is always the
database structure and the models will always match the database. This does not
solve the problem of not having the correct code to use the models, but nothing
would.

In addition, I've made some other changes to getting the engine and session. We
shouldn't use a single session for the entire pipeline so I've included the
session maker object in the top level. In addition, we use logging not print
statements to show what we are connecting to. And finally, we use the given DB
uri and not generate one for us. I am ignoring the environment data however.
This may be a bad idea.
Remove old docstring
Add some helpers

Accessing the database and the like is a very common activity so I'm adding
helpers for that stuff. The database help allows one to do things like:

    with self.session() as session:
        code

making it easier to have a session per step and the like. It will handle rolling
back on exceptions and has some generic logging for such things. It also has
some simple code for storing data.

I've also added a cif file finder helper. This shows up in a couple places so
I've added code for it. Simple code, nothing special but useful. There are tests
for it as well.
Minor reogranization
Add row2dict function
Add useful grouper function
First chain break loader class

This is a first pass at making something which can load chain breaks from a PDB
file.
Update chain break storage

This now uses a new table and thus a new model. Also, I store pdb, model and
chain as well.
Ignore my notes directory
Uncomment WebRequestHelper

This is a useful class to help make web requests and retry as needed.
Add some docs and raise if web requests all fail

We should raise an exception if all attempts at getting some data have failed.
This now does that. In addition, I added a few small docs on exceptions and
classes.
Add first pass at computing nt-nt correspondences

I've added a module that contains logic for computing the nt-nt correspondences.
The basic idea is that we get a PDB, get the representative pdb then align the
sequences of the two structures. We use the longest chain of each for the
alignment. The actual alignment is done in a java program. We access it by
sending a web request. The python code handles figuring out what to align sends
the data and then stores the alignment. This is simply a first pass at the
structure that has some tests to show basic parts seem to work.

Also, there is some sql written as a string. This may not be ideal, but the
reason I'm using it is because sqlalchemy refuses to reflect in views. This is
annoying but injection and the like isn't a risk here as this isn't user facing.
Plus it does escape and such for us. A bit annoying but not the end of the
world.
Make sure we don't return the same pdb as rep

We shouldn't try to correlate to the same PDB as both reference and target, as
that is silly. So we prevent that by never returning it.
Set config in CIFFileFinder
Add rnastructure

This is a set of generally useful libraries for dealing with rna structure. I'm
using it go get chain breaks right now. It will also be used for unit id
translation later.
Working version of chain breaks loader

This can load chain breaks and store them in the database easily. It uses code
in rnastructure to find the breaks and then stores them as needed.
Check if breaks exist and setup for better logging

Later we use several loggers so this setups for that a bit. In addition, we
should not keep writing breaks if they already exist. This prevents that. We
should also probably have some sort of unique constraints in the database.
Update to newer version
Use unit id converters and assume AU

We are assuming that we should use the AU as the type instead of BA?. This is
flawed but will work for the basic stuff now.