Initial check-in of the PyNAST project.
Modified several tests to use blast_align_unaligned_seqs rather than other pairwise aligners when the choice of pairwise aligner is not relevant to the test. This will all important tests to run when users don't have other pairwise installers available, and will allow tests to run in much shorter time if users don't have PyCogent's Cython code compiled. (The latter was a problem because one test called pair_hmm_align_unaligned_seqs on a large sequence.)
Added a new function, ipynast_seqs, an iterator which yields (sequence, exit status) tuples after each candidate sequences is passed to pynast_seq. The majority of functionality in this function was copied from pynast_seqs, as pynast_seqs has now been refactored as a wrapper for ipynast_seqs which collects all output in lists to return.

This change was made as it may be important at times for pynast_seqs to be able to function as an iterator. For example, if the user passes in millions of sequences, the previous version would store the aligned sequences in memory until all sequences have been processed. Now, these will be written out to file as the file buffer fills up, potentially freeing large amounts of memory.

A side effect of this change is that scripts/pynast.main, which now calls ipynast_seqs, no longer needs to pass a status callback function as it has the opportunity to do status calculations directly after each sequence is aligned. Those changes were therefore added as well. Note that because all callers of ipynast_seqs will have this opportunity, ipynast_seqs does not take a status callback function. pynast_seqs, however, does still allow users to pass a status callback function.
Updated code and tests to use the new formatdb application controller and convenience functions from PyCogent. These have the same interface as the functions that were included previously, but the PyCogent ones are a little better (and a little better tested).
Fixed a bug where too many terminal gaps were being added to aligned candidate sequences when the pairwise alignment resulted in 5' gaps in the (pairwise-aligned) template sequence. Justin found this issue, and a new test case was added with one of the sequences which caused his bug.
Added more descriptive error messaging when ipynast_seqs fails due to a ValueError. I'm hitting this error in a big analysis, and I'm not sure why, so better error message is necessary.
Fixed bug that showed up in rare cases, where blast_align_unaligned_seqs would fail because a +/- strand match would return a better hit than a +/+ strand match. +/- strand matching is not a feature that we want in blast_align_unaligned_seqs, as it provides different behaviour than the other align_unaligned_seqs functions, so fixed this by disallowing +/- or -/- strand matching.

Also, cleaned up the blast_align_unaligned_seqs function, as the variable names were confusing.
Updated command line interface to handle template alignments containing . characters, and to provide a more useful error message on other illegal characters (most common here is 'U').
updated script to handle template alignments which contain lowercase characters. this is useful as the greengenes data sets with imputed ends use these.
Removed unused fields from logfile output.
Prepared code and documentation for 1.0 release.
Updated __version__ strings to 1.1-dev. Also added links to PyNAST-1.0.tar.gz in the documentation.
Added a setup.py script, and updated the development documentation accordingly. Maybe build a 1.1 release to make the setup.py available.
Updated to check PyCogent version.
Updated documentation re: the install script to include information about how to install in non-standard locations.
Major changes to PyNAST, primarily involving the switch to uclust for sequence searching and as the default pairwise aligner. This change is expected to decrease the runtime of pynast, and yield better results (based on changes noted in Schloss 2009). Some brief notes about this are posted on the PyNAST blog (as Feature 1) at: http://wp.me/pMXzd-7 

This revision marks the break from the goal of matching the results of command line NAST. PyNAST no longer strives to match those results - the goal of the project is now to generate better alignments. Users who are interested in matching the result of NAST should use PyNAST 1.0. 

At this time, sequences are passed one at a time to uclust for searching and aligning. This is very inefficent, and changes to follow very shortly will improve upon this. (The changes were piling up though, and needed to be checked in.)
Modified ipyanst_seqs and pynast_seq to more efficently call uclust (i.e., all seqs at a time rather than one seq at a time). This was achieved by having pynast_seq call ipynast_seqs rather than the other way around. Next need to clean up the code to get rid of unused parameters, functions, and tests (essentially the ones related to using blast for sequence searching).
Removed blast-search-related functions, parameters, and tests.
Cleaned up code and tests to removed references to blast database searching. Added depreciation warnings for no longer supported parameters -- will removed these in PyNAST 1.2.
Fixed bug in the order of sequences returned from the alternative pairwise aligners. Caught this only via the QIIME tests, so added an additional test to make sure the PyNAST test would catch this in the future. This bug was introduced in changes yesterday, so shouldn't affect anything (especially since I don't think anyone actually uses the alt. pairwise aligners).