Revision history for Perl extension Bio::Tools::Blast.pm and related modules.

0.091 Thu May 18 15:15:35 2000
        (These fixes were made on both branch-06 and the main trunk).
       - Fixed Webblast.pm (jitterbug PR #220). It now uses SeqIO and IO::Scalar 
         for sending formatted query sequence data to the BLAST servers.
       - Fixed the examples/blast/ scripts related to remote BLASTing.
       - Added single quotes to an '_expect' data member in Sbjct 
         (reported by Janet Young in jitterbug PR #218).
       - Fixed regexp bug in Blast::HTML.pm that caused accessions with 
         . and _ characters to not be recognized.


0.09  Wed Mar 22 00:44:01 2000
       - Handles Blast reports that don't contain description sections.
       - Handles parsing of NCBI 2.0.9 Blast2 reports.
       - Identifiers of hits are assumed to be the first
         chunk of non-whitespace characters in the description line
         Does not assume any semantics in the structure of the identifier.
         (Blast::Sbjct::_set_id() formerly attempted to extract database 
         name from the seq identifiers, but this was prone to breaking).
       - Fixed bug in the parsing of reports that lack an hits
         (incorporated code fix submitted by Michael B. Thornton
          jitterbug PR#114, PR#173).
       - New helper script retrieve_blast.pl added to examples/blast/
         for retrieving Blast reports from NCBI after running
         run_blast_remote.pl See docs in retrieve_blast.pl for details.
       - Updated Webblast.pm with new URLs for the NCBI servers.
       - Fixed bug (jitterbug PR#84) in the parsing of alignments that would 
         cause occaisionally cause some significant hits to be missed
         (incorporates code suggested by Peter van Heusden).
       - Added support to Blast.pm for not parsing alignment data
         using the new NO_ALIGNS parsing option. Also added -noaligns
         command-line option to blast_config.pl (addresses jitterbug PR#93).
       - Blast::hit() method doesn't blow up if there are no hits
         (fixes jitterbug PR#129).
       - Addressed jitterbug PR#96 by correcting docs. If the significance
         is defined but of bad format, no default is set.
       - HSP.pm properly handles bit scores expressed using floating point
         and scientific notation (fixes jitterbug report PR#110).
       - Fixed logic error in HSP.pm that would incorrectly throw an
         exception when the number of identical residues was zero
         (fixes jitterbug PR#164).
       - HSP::strand() returns -1, 0, 1 instead of 'Minus', 'Plus', ''
         to be in-line with with behavior of SeqFeature.

Fixes within Bio::Root
----------------------
       - Fixed bug reported in PR#85. Bio::Root::Utilities::get_newline() 
         returns "\n" by default.
       - IOManager::read doesn't call alarm() if it isn't available
         (fixes bug #PR98).
       - Root::Object::_set_io() does not pass @_ to the IOManager constructor 
         call (incorporates suggestion from Scot Harker, jitterbut PR#192). 


0.085  Tue Jun 29 05:15:40 1999 (bioperl 0.05.1)
(Note: the $VERSION variable was not changed to 0.085 in this release!)
       - Fixed bugs reported in PR#s: 30, 31, 41, 44, 45, 47, 48
       - Blast.pm no longer throws exceptions for hitless reports,
         even if a -signif criterion is specified.
       - Better support for PSI Blasts (running and parsing) based on 
         comments/suggestions from Ross Crowhurst and Lu Sun. 
       - Bug fixes in Webblast.pm regarding blastServerURL and filenames
         with special characters (bug reports from James Diggans and 
         Bradford Powell, respectively).  
       - Removed =head3 tags that were causing pod2man warnings.
       - Fixed -best parsing switch.
       - Added better POD to Webblast.pm

0.080  Sat Apr 24 19:39:37 1999  (bioperl 0.05)
       - Complete re-implementation of the Blast report parsing strategy.
         The parser now always streamifies all Blast report(s) and
         segments them hit-wise instead of report-wise. This improves 
         performance and memory usage (but doesn't solve the memory leak).
       - Documented a workaround for the memory leak (see the docs for
	 Blast.pm under the section "Memory Usage Issues").
       - Webblast.pm now uses LWP instead of postclient.pl to post network 
         Blast requests (thanks to Ross Crowhurst for code submission). 
         This is a much more robust mechanism, although it now requires you 
         to have LWP installed ("a good thing"). For example, it makes it 
         easy to send requests and receive results through a firewall.
         It can run Blast1, Blast2, and PSI-Blast at NCBI and also supports
         WashU-Blast servers.
       - Fixed some miscellaneous parsing bugs and errors reported by
         Greg Colello, Xie Tao, and Richard Copley from the pre-release
       - Updated example/blast scripts. Renamed parse.pl and parse2.pl to
         parse_blast.pl and parse_blast2.pl. parse_stream.pl is gone
         (since parse_blast.pl now handles both files and streams).
         Renamed run.pl to run_blast_remote.pl and added additional
         options to keep it in synch with the new Webblast.pm.
       

0.075  Wed Feb 17 01:29:57 1999  (bioperl 0.04.4)
        - Bug fix in Blast::Run::postclient.pl which was always printing 
          usage information (reported by Ross Crowhurst).
        - Improved error detection & reporting in Blast::Run::Webblast
	  and Blast::Run::postclient.pl.
        - Bug fixes in HSP.pm: _set_match_stats() now properly handles
          BLASTN output format and matches() properly handles BLASTX
          reports.
        - Fixed detection of substitution matrix type in Blast.pm.
        - Updated Blast example scripts in examples/blast/
	  (in particular, run.pl).
	  
0.074  Wed Feb  3 04:10:06 1999  (bioperl 0.04.3)
        - Modified blast_config.pl to make the -prog and -db command-line
          arguments mandatory. There are no default values for $opt_blast
          and $opt_db. Also removed the -dna command-line argument.
        - Fixed alignment section parsing bug in Blast.pm (bug report #24);
          affects _parse_hsp_string().
        - Modified Blast::_display_hits() to use table_tiled(), thus
          avoiding the buggy Sbjct::_display_hits().
        - Bug fix in Blast::HTML.pm regarding detection of HTML formatting.
        - Changes in HSP::_set_data() to support BLAST-GP version 2.0.8.
        - Changed the #! line of Bio/Tools/Blast/Run/postclient.pl
          to the more standard /usr/bin/perl and predeclared some vars
          to avoid compiler warnings.
        - blast_config.pl and seqtools.pl were modified to include support 
          for the -wait option (sets timeout during file/stream reading). 
        - Assorted touch-ups to example/blast scripts.

0.073  Mon Dec 28 15:18:29 1998  (bioperl 0.04.2)
        - Made changes in Sbjct.pm and HSP.pm to allow parsing of older
          versions of Blast. This affected HSP::_set_data() ("Query:?")
          and Sbjct::_set_hsps() ("\s*Score").
        - Improved error handling in Sbjct::_set_hsps() and error
          detection in HSP_set_data().
        - Added methods for obtaining the number of identical and conserved
          residues (sans gaps) sequences in HSP.pm (num_identical, 
          num_conserved).
        - Modified the default behavior of frac_identical() and 
          frac_conserved() to use the procedure used in the BLAST report:
             BLAST-GP: uses total length of alignment in denominator
             WU-BLAST: uses length of query sequence (sans gaps) in denominator.
          When these methods are called with an argument ('sbjct' or 'query'),
          the length of the sbjct or query sequence (sans gaps) is used in 
          the denominator (recommended).
        - Fixed error in test #29 in the t/Blast.t test script.

0.072  Wed Dec 16 05:05:21 1998  (bioperl 0.04.1)
        - Fixed out of range exception in HSP::matches() as suggested by
          Michael Lonetto in bio.perl.org bug report #11.
        - Made changes in Sbjct.pm and HSP.pm to deal with the reporting of
          TBLAST[NX] data in amino acid coordinate space. This affects 
          frac_identical() and frac_conserved() in HSP.pm, and _tile_hsps(),
          length_aln(), frac_aligned_query(), frac_aligned_hit(), 
          frac_unaligned_query(), frac_unaligned_hit() in Sbjct.pm.
	  These also in response to bug report #11.
        - Fixed behavior of frac_identical() and frac_aligned() in 
          both Sbjct.pm and HSP.pm to correspond to the data reported
          by Blast. Default behavior now includes gaps instead of ignoring
          them as before. This was in response to a report by Eli Venter.
        - Cleaned up a few "uninitialized value" warnings.

0.071  Thu Dec 10 18:41:51 1998  (bioperl 0.04)
        - Bio::Tools::Blast::Sbjct::_set_id() to no longer uppercases
          sequence ids for sbjct sequences. (Note however that the Blast
          dataset may have been built with a tool that uppercases all 
          sequence ids. Check your raw Blast report.).
        - Bio::Tools::Blast::HTML.pm incorporates the new URL for
          information about the Bioperl Blast module.

0.07  Thu Dec  3 13:43:06 1998
        - Reduced memory leak that becomes apparent when parsing many Blast
          reports. This resulted in changes to Bio::Tools::Blast::_get_parse_func()
          and the addition of a new function to Bio::Root::Object.pm that 
          explicitly breaks cyclic object reference structures.
          (This problem was highlighted by recently Lincoln Stein, who is has 
          created a BoulderIO-based Blast parser. See BoulderIO-1.10 or later).
        - Fixed support in blast_config.pl for supplying a custom filtering 
          function as a string using the -filt_func command-line option.
          Added some examples of this to the parse.pl example script.
        - Added start() and end() methods to Bio::Tools::Blast::HSP
          and Bio::Tools::Blast::Sbjct.pm. Sbjct also received a range() 
          method (based on discussion with Ewan Birney).
        - Fixed bugs in Blast.pm related to accessing the name of the
          database, expecially in conjunction with stream parsing.
        - A few fixes in Blast.pm and Sbjct regarding handling of
          hit sequence and database names (reported by John Calley and
          and Karl-Heinz Ott).
        - Fixed regexp in Blast::_parse_hsp_data (reported by Brian Karlak).
        - Added columns for start/end of the query/sbjct sequences to the
          table_tiled() output. Added columns for HSP query/sbjct strand
          and frame information to the table() output.
        - Changes in Bio::Root::Object.pm regarding strict() and verbose()
          which are no longer object-specific.
        - Increased documentation in Bio::Root::Object.pm.
        - Removed autoloading and several deprecated methods from the 
          Bio::Root::Object and Utilities.
          

0.062  Fri Sep  4 00:45:05 1998
	- Fixed bugs in Blast::_set_hits() which caused no hits to be
          saved when _parse_hsp_data() threw an exception.
        - Assorted documentation changes. This includes a fix in 
          the docs of Bio::Root::Object.pm that caused a compilation error
          when you try to use it without installing it via Makefile.PL.
          Most modules now have docs for data members in their PODs.
	- Added method strip_html() to Bio::Tools::WWW.pm (a more general
          version than that found in Bio::Tools::Blast::HTML.pm).
	- Includes Bio::Seq.pm version 0.050 (formerly Bio::PreSeq.pm).
          This version has Ewan Birney's modifications (start() and end()
          methods added; numbering() now deprecated).
	- By popular demand, Bio::Root::Object::src_obj() has been changed
	  to the more intuitive parent(). All modules have been updated to
	  incorporate this change.

0.061  Wed Aug 26 12:30:34 1998 
	- Fixed memory leak problem associated with Blast::_set_hits() that
	  lead to excessive memory usage when parsing large numbers reports,
	  expecially when using the -check_all=>1 parsing option.
          (This may have solved the parse_stream.pl memory leak.)
        - Fixed regexp in Sbjct::_set_hsps() to recognize sequence lengths
          containing commas (reported by Lincoln Stein).
	- Blast::signif() now always returns number in scientific notation.
	- Fixed bug in Bio::Root::IOManager::display() (wasn't returning true).
 	- Changed Makefile.PL to always save backups for in-place edits
	  and prevents the 'inplace edit without backup' warning (reported by 
	  Bobby Otillar).
        - Assorted documentation changes/additions.

0.06  Sun Aug 16 18:31:27 1998
        - Fixed bug in HSP::_set_match_stats() that failed to recognize Frames
          on the + strand.
        - Added HSP::strand() method for retrieval of strand information for
          query and sbjct HSP sequences from nucleotide Blasts.
        - Changed calls to Perl's length() function to CORE::length()
          to avoid confusing the Perl 5.005_001 interpreter with
          Bio::Tools::HSP::length() and Bio::Tools::Sbjct::length(). 
          (Reported by Mike Cariaso).
        - Added column to the output of the Blast::table_tiled() method
          to include fraction-aligned of the sbjct sequence.
        - Uses new version of Bio::Root::Object.pm that has new exception
          handling policy: exceptions and warnings are no longer by default
          attached to the objects that threw them. See notes about this in 
          Bio::Root::Object.pm. (Main reason for 0.003-point jump in version).
	- Added some safety net methods in Sbjct.pm: frac_aligned_sbjct()
	  and num_unaligned_sbjct(), which map to frac_aligned_hit() and 
          num_unaligned_hit(), respectively (API consistency issue).
        - Minor changes/fixes in some of the demo scripts (seqtools.pl et al.).
	- Removed "Modifications" notes from Blast-related modules. Added
          pointer to distribution site instead, which consolidates this info.
	- Modules can be used by copying directly from the lib/ directory into
          your perl/lib directory without loss of functionality but at the expense of
	  increased startup time. It is still recommended that you use the standard
	  Makefile.PL procedure, however, since this will properly autosplit
          the modules as well as run other checks.
          
0.057  Thu Jul 23 02:28:26 1998
        - HSP.pm handles "match" sequence lines that are not properly padded.
          Affects HSP::_set_data() and other HSP.pm methods that use residue
          strings or indices (seq_str(), seq_inds()). (Reported by Libby Shoop).
        - Added signif_fmt() method to Blast.pm to allow retrieval of
          P/Expect value data in different formats (e.g., exponent only).
        - Changes in the table() methods of Blast.pm to accomodate signif_fmt().
        - Minor changes in destructors to improve memory management.
        - Added warnings in Blast.pm and parse_stream.pl regarding
          memory usage issue when parsing Blast streams.
        - Updated HTML::get_html_func() to work with the new version of 
	  Bio::Root::IOManager::read().
        - Added new rexexps to HTML::_markup_report() to deal with hits
          which lack a database identifier (e.g., gi|210095).
	  Added a few other SGD-specific markups to this method.
        - New demo script "parse_multi.pl" provided as an alternative to the 
          memory-hungry parse_stream.pl when crunching many reports.
        - Minor changes to parsing demo scripts and blast_config.pl.
        - Added more tests to the t/blast.t test script.
        - Small change in error handling in Webblast::_blast(): detects
          when the Blast report file is empty and unlinks it.
        - When the -email option is used, the list of files returned by 
          blast_remote() contains the string 'email' as the first element.
          This provides a signal to Bio::Tools::Blast.pm.
       
0.056  Wed Jul 15 03:42:20 1998
        - Fixed bug in HSP::seq_str() in which white space was not removed
          from sequences generated by merging multiple lines, leading
          to excessive warnings when building Bio::PreSeq objects.
          This also involved related fixes in Bio::PreSeq.pm and
          Bio::Root::Utilities.pm (q.v.). (Reported by Tim Dudgeon).
        - Fixed bug in PreSeq.pm that caused bounds checking to fail
          incorrectly when sequence numbering does not begin at 1.
        - Uncompressing Blast reports no longer requires write access 
          in the directory containing the compressed files.
        - Added another example script eg/blast/parse2.pl.
        - Bio::Root::IOManager::read() now requires the supplied parsing 
          function reference to return true for each record parsed
          (otherwise parsing stops).

0.055  Tue Jun 23 13:56:34 1998
        - Fixed parsing problems for hit sequences without descriptions
          or without database identifiers. This affected 
          Blast::_parse_hsp_data() and in Sbjct.pm, the methods
          _set_id(), _set_desc(), and  _set_hsps(). Most seriously,
          _set_hsps() failed to locate the 'Length = ' line for 
          sequences without descriptions.
        - Parses parameter data from NCBI Blast 2.0.5 (format change from 2.0.4)
          This affected Blast::_set_parameters() and Blast::_parse_hsp_data().
          (Reported by Elliot Lefkowitz.)
	- Minor change in HSP::_set_seq() regexp for identifying sequence data.
        - Table output methods remove tabs from ends of lines.
	- Updated Bio::Tools::Blast::HTML.pm to work with the
          new version of read() updated in 0.054.
        - Improved file_date() method of Bio::Root::Utilities.pm

0.054  Tue Jun 16 20:24:36 1998
        - Minor change in the way Bio::Root::IOManager::read() works
	  (now checks return value of called func ref). Only affects
          module internals.
	- Minor changes in eg/ scripts and some documentation additions.
	- Fixed a bug in Makefile.PL regarding detection of UnivAln.pm.

0.053  Fri Jun 12 20:55:27 1998
        - Added the "collapse" functionality to the seq_inds() method of 
          HSP.pm and added a seq_inds() method to Sbjct.pm.
	- Added a new demo script eg/blast/parse_positions.pl.
        - Remove the "-residues" and "-tile_hsps" parsing options since 
          they are not necessary.

0.052  Thu Jun 11 20:18:45 1998
        - Minor bug fixes in I/O methods.
	- Improved documentation for Bio::Root modules.
        - Miscellaneous documentation additions.

0.051  Wed Jun 10 12:26:06 1998
	- Bio::Tools::Blast::HSP.pm does some additional deferring of
          sequence data processing for a slight performance enhancement.
 	- Fixed formatting bug in Bio::Tools::Blast::HTML.pm that caused
	  uneven formatting of some description lines.
        - Minor bug fixes in parsing code of Bio::Tools::Blast.pm.
	- Some documentation additions.
	- Makefile prints warning if Perl version is < 5.003.

0.05  Fri Jun  5 15:58:22 1998
        - Improved gapped Blast support.
        - Enhanced IO (reads from existing file or STDIN).
        - Enhanced parsing: can parse an input stream containing
	  many reports.
        - Created modularized version of Alex Dong Li's webblast.
	- Added support for running Blasts remotely at NCBI using
          Bio::Tools::Blast::Run::Webblast.pm.
        - Added support for running local Blasts using the skeletal
          Bio::Tools::Blast::Run::LocalBlast.pm.
        _ Bio::Tools::Blast::HSP.pm can create Bio::PreSeq.pm sequence
          objects and Bio::UnivAln.pm sequence alignment objects on demand.
        - Encapsulated HTML-formatting code into the new module
          Bio::Tools::Blast::HTML.pm. Updated markup regexps.
        - Blast.pm module can parse HTML-formatted reports
 	  (but beware of unforseen changes in the HTML!).
	- Enhanced tab-delimited table output methods.
        - Improved documentation: compatible with 5.004 pod2html.
        - Created a variety of demo scripts (see eg/blast/)
	- Miscellaneous bug fixes and API adjustments..
        - Bundled for distribution with MakeMaker and created test sript.

0.03  Fri Mar 27 23:35:32 1998
        - Support for gapped Blast added.
        - Improved parsing strategy.
        - Inherits from Bio::Tools::SeqAnal.pm instead of Bio::Root::Object.pm
        - Added more documentation.
	- Miscellaneous bug fixes.

0.01  March 1996
	- original version. 
        - Parses Blast 1.x report files.



