$Id: readme.v35 120 2010-01-31 19:42:09Z wrp $ $Revision: 55 $ >>Sep. 10, 2008 Fix problem in init_ascii() call for p2_complib2.c. >>Sep. 9, 2008 Fix bug in display of library name when written to an output file (rather than stdout). >>Aug. 28, 2008 fa35_04_02 SVN Revision: 45 Fix serious bug in alignment generation that only occurred when large libraries were used as a query with [t]fast[x/y]. This bug often resulted in a core dump. Address some other issues with uninitialized variables with -m 9c. >>Jul. 15, 2008 fa35_04_01 SVN Revision: 38 Correct problems with Makefiles. Add information on compiling to README. Address issue with mp_KS for -m 10 when searching small libraries. >>Jul. 7, 2008 fa35_04_01 SVN Revision: 35 Fix problems that occurred when statistics are disabled with -z -1, both for a normal library search, and for searches of a small library. >>Jul. 3, 2008 SVN Revision: 33 Continue to fix an issue with 'J' and -S. >>Jun. 29, 2008 SVN Revision: 29, 31 Fix additional problems with Makefiles, some issues uncovered with Solars 'C' compiler (Rev. 30). Discover serious bug when searching long, overlapping sequences, such as genomes. The length of the library sequence was not updated to reflect the length of the new region plus the overlap. Fix inconsistency in the value of 'J' between uascii.h/aascii[] and pascii[]. Add code to ensure that lascii[], qascii[], never return a value outside pam2[][] (all <= pst.nsq) (particularly for 'O' and 'U' amino-acids). exit(0) returns for map_db, list_db. >>Jun. 11, 2008 Correct bug in scaleswn.c that prevented exact matches to queries < 10 residues from being scored and displayed. >>Jun. 1, 2008 Address various cosmetic issues in FASTA output: (1) Modify comp_lib2.c so that -O outfile works when multiple queries are compared in one run. (2) remove the duplicated query sequence length in the 1>>>query line. (3) in -m 10 output, the tags "pg_name" and "pg_ver" were duplicated, e.g. >>>K1HUAG, 109 aa vs a library ; pg_name: fasta35_t ; pg_ver: 35.03 ; pg_argv: fasta35_t -q -b 10 -d 5 -m 10 ../seq/prot_test.lseg a ; pg_name: FASTA ; pg_ver: 3.5 Sept 2006 The ; pg_ver and ; pg_name produced by the get_param() functions in drop*.c have been renamed ; pg_ver_rel and ; pg_ver_alg. >>>K1HUAG, 109 aa vs a library ; pg_name: fasta35_t ; pg_ver: 35.03 ; pg_argv: fasta35_t -q -b 10 -d 5 -m 10 ../seq/prot_test.lseg a ; pg_name_alg: FASTA ; pg_ver_rel: 3.5 Sept 2006 Modify mshowbest.c, mshowalign.c to highlight E() values ( in HTML output. >>Apr. 16, 2008 fa35_03_07 Merge fa35_ann1_br, which allows annotations in library sequences. The PVM/MPI parallel version now support query sequence annotations and -m 9c annotation encoding. It does not yet support library annotations. Tested with both PVM and MPI. >>Apr. 2, 2008 fa35_03_06 Ensure that code in last_init() to modify ktup never increases ktup value. Add fasta_versions.html to more explicitly describe programs available. >>Mar. 4, 2008 Fix parsing of parameters (matrix, gap open, gap ext) in ASN.1 PSSM files produced by blastpgp. >>Feb. 18, 2008 fa35_03_05 Re-implement -M low-high sequence range options. Sequence range restriction has probably been missing since the introduction of ggsearch and glsearch, which use a new approach to limiting the sequence range. >>Feb. 7, 2008 fa35_ann1_br Add annotations to library sequences (they were already available in query sequences). Currently, annotations are only available within sequences, but they should be available in FASTA format, or any of the other ascii text formats (EMBL/Swissprot, Genbank, PIR/GCG). If annotations are present in a library and the annotation characters includes '*', then the -V '*' option MUST be used. However, special characters other than '*' are ignored, so annotations of '@', '%', or '@' should be transparent. In translated sequence comparisons, annotations are only available for the protein sequence. The format for encoded annotations has changed to support annotations in both the query and library sequence. If the -m 9c flag is provided and annotations are present, then an annotated position in the alignment will be encoded as: '|'q-pos':'l-pos':'q-symbol'l-symbol':'match-symbol'q-residue'l-residue' For example: |7:7:@@:=YY|14:14:##:=TT In cases where the query or library sequence does not have an annotation, then the q-symbol or l-symbol will be 'X' (which is not a valid annotion symbol). >>Jan. 25, 2008 fa35_03_04 Map 'O' (pyrrolysine) to 'K', 'U' (seleno-cysteine) to 'C' in uascii.h ('J' is already recognized and mapped to the average of 'I' and 'L'). Thus, 'J' will appear in alignments, but 'O' and 'U' are transformed to 'K' and 'C'. Because "Oo" and "Uo" are not (currently) part of aax[] ("Uu" is in ntx[]), apam.c/build_xascii() was extended to add characters from othx[] - "oth" for "other" so that they are not lost. Double check, and fix, some mappings for 'J/j' and 'Z/z'. >>Jan. 11, 2008 fa35_03_03 Clean up some issues with -m 10 output; put "; mp_Algorithm", "; mp_Parameters" down with other -m 10 ";" lines. Also provide "; al_code" and "; al_code_ann" if -m 9c is specified. Remove duplicate ">>>query" line. Add "; aln_code" and "; ann_code" to -m 10 -m 9c output. The alignment/annotation encoding is only produced once (in showbest(), and is then saved for -m 10 aligment. >>Dec. 13, 2007 fa35_03_02m (merge of fa35_03_02 and fa35_02_08_br) Add ability to search a subset of a library using a file name and a list of accession/gi numbers. This version introduces a new filetype, 10, which consists of a first line with a target filename, format, and accession number format-type, and optionally the accession number format in the database, followed by a list of accession numbers. For example: gi|1170095|sp|P46419|GSTM1_DERPT Glutathione S-transferase (GST class-mu) The offset is 4 and the termination character is '|'. For databases distributed in FASTA format from the European Bioinformatics Institute, the offset depends on the name of the database, e.g. >SW:104K_THEAN Q4U9M9 104 kDa microneme/rhoptry antigen precursor (p104). and the delimiter is ' ' (space, the default). Accession formats 1 and 3 expect strings; accession formats 2 and 4 work with integers (e.g. gi numbers). >>Dec. 12, 2007 fa35_02_08 Correct bug in ssearch35 gapped scores that only occurred in non-accelerated code. This bug has been present since fa35_02_06. Modified the Makefiles so that accelerated (ssearch35(_t)) and non-accelerated (ssearch35s(_t)) are available. Edited Makefile's to provide accelerated ssearch35 more specifically. Modifications to provide information about annotated residues in the -m9c coded output. Previously, -m 9c output added a field: =26+9=15-2=9-1=3+1=74-2=3-3=63 after the standard -m 9 output information. With the new version, an annotated query sequence ( -V '*#' ) adds the field: |14:16:#TA|44:37:*>ST|71:66:#=TT which indicates that residue 14 in the query sequence aligns with residue 16 in the target (library) with annotation symbol '#', the alignment score is '<' less than zero, and the residues are 'T' (query) and 'M' (library). (The '|' is used to separate each annotation entry.) >>Nov. 10, 2007 Parts of p2_complib.c and p2_workcomp.c, and the pvm/mpi Makefiles, have been updated to be consistent with name changes in the param.h and structs.h directories. >>Nov. 20, 2007 fa35_02_08 Parts of p2_complib.c and p2_workcomp.c, and the pvm/mpi Makefiles, have been updated to be consistent with name changes in the param.h and structs.h directories. >>Nov. 6, 2007 fa35_02_07 Correct problems with asymmetric RNA matrices in initfa.c and rna.mat. >>Oct. 18, 2007 Correct problem parsing ASN1 FastaDefLines when the database is local. Recovering from a misplaced cvs commit of code that was supposed to be on a branch, code has been recovered from earlier versions (fa35_02_05 because fa35_02_06 has some branch contamination). >>Oct. 4, 2007 fa35_02_06 Correct error in gap penalties in dropnnw.c. Due to an unfortunate inconsistency, the gap parameter in FLOCAL_ALIGN (in dropgsw2.c) had a different meaning than that in almost all the other programs (it was the sum of gap_open and gap_ext). The FLOCAL_ALIGN function call was copied for FGLOBAL_ALIGN, even though the the FGLOBAL_ALIGN function used the more conventional gap_open, gap_ext parameters. Thus, FGLOBAL_ALIGN was wrong and the subsequent do_walign() in dropnnw.c were wrong. dropgsw2.c:FLOCAL_ALIGN has been modified to use the conventional gap_open parameter, and calls to dropnnw.c: FGLOBAL_ALIGN() and do_walign() have been fixed. >>Sept. 20, 2007 Modify the logic used when saving a seq_record *seq_p into beststr *bbp to ensure that if the seq_record is replaced, it is replaced at all the places where it is referenced. This involves adding a linked list into beststr (*bbp->bbp_link). When making the link (and freeing it up), be certain that the linked seq_p is the same as the one being replaced. >>Sept. 18, 2007 fa35_02_05 A relatively obscure problem was found on the SGI platform when searching a library smaller than 500 sequences (thus requiring some shuffles). Two bugs were found and corrected; one involved not allocating aa1shuff with COMP_THR and not do a m_file_p->ranliba() before re_getlib(). The second involved destroying a pointer to the list of seq_records when a sequence was being shuffled. The bugs were confirmed with Insure, and have been fixed. >>Sept. 7, 2007 fa35_02_04 Revamp the offset handling code to provide better uniformity between query and library offsets and coordinate systems. Fix a problem with load_mmap() to load 64-bit sequence locations properly on machines with 32-bit integers. >>Sept. 4, 2007 Modify ncbl2_mlib.c slightly to check to see whether the amino-acid mapping in blast databases is identical to the FASTA mapping (it should be). If they are identical, do not re-map the blast amino acid sequences (potentially a small speed up). >>Aug. 22, 2007 Change ps_lav.c to lav2ps.c, and add lav2svg.c. It is now possible to generate a lalign35 HTML output that has both SVG (lav2svg) and PNG (lav2ps | gs ), graphics. >>Aug. 10, 2007 CVS fa35_02_03 Fix faatran.c:aacmap() bug. >>Aug. 6, 2007 Extensive restructuring of pssm_asn_subs.c to parse PSSM:2 ASN.1's downloaded from NCBI WWW PSI-BLAST more robustly. >>July 25, 2007 CVS fa35_02_02 Change default gap penalties for OPTIMA5 matrix to -20/-2 from -24/-4. >>July 24, 2007 Correct bugs introduced by adding 'J' - 'J' was initially put before 'X' and '*' in the alphabet, which led to problems because the one-dimensional lower-triangular pam[] matrices (abl50[], abl62[], etc) had entries for 'X', and '*', but not for 'J'. By placing 'J' after the other characters, the problem is resolved. Modify tatstats.c to accommodate 'J'. '*' is back in the aascii[] matrix, so that it is present by default (like fasta34). >>July 23, 2007 Changes to support sub-sequence ranges for "library" sequences - necessary for fully functional prss (ssearch35) and lalign35. For all programs, it is now possible to specify a subset of both the query and the library, e.g. lalign35 -q mchu.aa:1-74 mchu.aa:75-148 Note, however, that the subset range applied to the library will be applied to every sequence in the library - not just the first - and that the same subset range is applied to each sequence. This probably makes sense only if the library contains a single sequence (this is also true for the query file). Correct bugs in the functions that produce lav output from lalign35 -m 11 to properly report the begin and end coordinates of both sequences. Previously, coordinates always began with "1". Correct associated bug in ps_lav.c that assumed coordinates started with "1". >>June 29, 2007 CVS fa35_02_01 Merge of HEAD with fasta35 branch. >>June 29, 2007 CVS fa35_01_06 Add exit(0); to ps_lav.c for 0 return code. >>June 26, 2007 Add amino-acid 'J' for 'I' or 'L'. Add Mueller and Vingron (2000) J. Comp. Biol. 7:761-776 VT160 matrix, "-s VT160", and OPTIMA_5 (Kann et al. (2000) Proteins 41:498-503). Changes to dropnnw.c documentation functions to remove #ifdef's from strncpy() - which apparently is a macro in some versions of gcc. >>June 7, 2007 Modify initfa.c to allow ggssearch35(_t), glsearch35(_t) to use PSSMs. >>June 5, 2007 CVS fa35_01_05 Modifications to p2_complib.c, p2_workcomp.c to support Intel C compiler. Fixed bug in p2_workcomp.c - gstring[2][MAX_STR] required - [MAX_SSTR] too short. mp35comp* programs now tested and working (as are pv35comp*, c35.work* programs). Fix problem with fasts/fastm/fastf last_tat.c with limited memory. Correct problem with lalign35.exe Makefile.nm_[fp]com. Add $(CFLAGS) to map_db to enable large file support. Address problem with PSSM's when '*' not defined (initfa.c:extend_pssm()). >>May 30, 2007 CVS fa35_01_04 Complete work on ps_lav, which converts an lalign35 lav (-m 11) file into a postscript plot, which looks identical to the plots produced by plalign from fasta2. (ps_lav has been replaced by lav2ps and lav2svg). >>May 25,29, 2007 Changes to defs.h, doinit.c mshowalign.c for -m 11, which produces lav output only for lalign35. Changes to comp_lib2.c to add m_msg.std_output, which provides all the standard print lines. This is turned off for -m 11 (lav) output. lalign35 -m 11 provides standard lav output, with the addition of #lalign35 -q ... . >>May 18, 2007 Add m_msg.zsflag to preserve pst.zsflag when reset by global/global exclusion of many library sequences. >>May 9, 2007 CVS fa35_01_03 Tested local database size determination with p2_complib2/p2_workcomp2. >>May 2, 2007 renamed fasta35, pv35comp, etc Separate thread buffer structures from param.h. Problems with incorrect alignments has been fixed by re-initializing the best_seqs and lib_buf2_list.buf2 structures after each query sequence. The labels on the alignment scores are much more informative (and more diverse). In the past, alignment scores looked like: >>gi|121716|sp|P10649|GSTM1_MOUSE Glutathione S-transfer (218 aa) s-w opt: 1497 Z-score: 1857.5 bits: 350.8 E(): 8.3e-97 Smith-Waterman score: 1497; 100.0% identity (100.0% similar) in 218 aa overlap (1-218:1-218) ^^^^^^^^^^^^^^ where the highlighted text was either: "Smith-Waterman" or "banded Smith-Waterman". In fact, scores were calculated in other ways, including global/local for fasts and fastf. With the addition of ggsearch35, glsearch35, and lalign35, there are many more ways to calculate alignments: "Smith-Waterman" (ssearch and protein fasta), "banded Smith-Waterman" (DNA fasta), "Waterman-Eggert", "trans. Smith-Waterman", "global/local", "trans. global/local", "global/global (N-W)". The last option is a global global alignment, but with the affine gap penalties used in the Smith-Waterman algorithm. >>April 24, 2007 The new program structure has been migrated to the PVM and MPI versions. In addition, the new global algorithms (pv35compgg, pv35compgl) have been moved, though the the PVM/MPI versions do not (yet) to the appropriate size filtering. >>April 19, 2007 Two new programs, ggsearch35(_t) and glsearch35_t are now available. ggsearch35(_t) calculates an alignment score that is global in the query and global in the library; glsearch35_t calculates an alignment that is global in the query and local, while local in the library sequence. The latter program is designed for global alignments to domains. Both programs assume that scores are normally distributed. This appears to be an excellent approximation for ggsearch35 scores, but the distribution is somewhat skewed for global/local (glsearch) scores. ggsearch35(_t) only compares the query to library sequences that are beween 80% and 125% of the length of the query; glsearch limits comparisons to library sequences that are longer than 80% of the query. Initial results suggest that there is relatively little length dependence of scores over this range (scores go down dramatically outside these ranges). A bug was found and fixed in showalign() and showbest() where the aa1save buffer was not preserved when some sequences needed to be re-read, while others were stored in the beststr. >>April 9, 2007 Some of the drop*.c functions have been reconfigured to reduce the amount of duplicate code. For example, dropgsw.c, dropnsw.c, and dropnfa.c all used exactly the same code to produce global alignments (NW_ALIGN() and nw_align()), this code is now in wm_align.c. Likewise, those same files, as well as dropgw2.c, use identical code to produce consensus alignments (calcons(), calcons_a(), calc_id(), calc_code()). Rather than working with three or four copies of identical code, there is now one version. >>March 29, 2007 At last, the lalign (SIM) algorithm has been moved from FASTA21 to FASTA35. Currently, only lalign35 is available. A plotting version will be available shortly (or perhaps a more general solution that produces lav output). The statistical estimates for lalign35 should be much more accurate than those from the earlier lalign, because lambda and K are estimated from shuffles. Many functions have been modified to reduce the number of times structures are passed as arguments, rather than pointers. >>February 23, 2007 The threading strategy has been modified slightly to separate the end of the search phase (and a complete reading of all results buffers) from the termination phase. This will allow future threading of subsequent phases, including the Smith-Waterman alignments in showbest() and showalign() (though care will be required to ensure that the results are presented in the correct order). >>February 20, 2007 fasta-34_27_0 (released as fasta-35_1) The FASTA programs have been restructured to reduce the differences between the threaded and unthreaded versions (and ultimately the parallel versions) and to make more efficient use of modern large memory systems. This is the beginning of a move towards a more robust shuffling strategy when searching databases with modest numbers of related sequences. The major changes: comp_lib.c -> comp_lib2.c - comp_lib.c will be removed work_thr.c -> work_thr2.c - work_thr.c will be removed mshowbest.c, mshowalign.c have been modified to remove aa1 as an argument. They must allocate that space if they need it. The system is set up to allocate a substantial amount of library sequence memory, either to a single buffer (unthreaded) or to the threaded buffer pool. For smaller databases, the library sequences are read once, and then subsequently read from memory (this could be extended for RANLIB(bline) as well). Soon, these changes will allow the program to re-read the beststr[] sequences and shuffle them to produce accurate lambda/K estimates. ================================================================ See readme.v34t0 for earlier changes. ================================================================