--- /dev/null
+Over all structure of the fasta3 program. (Some functions
+are different for translated comparisons FASTX, FASTY, TFASTX, TFASTY.)
+
+main() { /* complib.c structure */
+
+ /* get command line arguments, set up initial parameter values */
+ initenv (argc, argv, &m_msg, &pst,&aa0[0],outtty);
+
+ /* allocate space for sequence arrays */
+ /* get the query file name if not on command line */
+ /* get query */
+ m_msg.n0 = getseq (m_msg.tname,aa0[0], MAXTOT, m_msg.libstr,&pst.dnaseq,
+ &m_msg.sq0off);
+
+ /* reset some parameters if DNA */
+ resetp (aa0[0], m_msg.n0, &m_msg, &pst);
+
+ /* get a library name if not on command line */
+ libchoice(m_msg.lname,sizeof(m_msg.lname),&m_msg);
+ /* use library name to build list of library files */
+ libselect(m_msg.lname, &m_msg);
+
+ /* get additional options (ktup, prss-window) if not specified */
+ query_parm (&m_msg, &pst);
+
+ /* do final parameter initializations */
+ last_init(&m_msg, &pst);
+
+ /* set up structures for saved scores[20000], statistics[50000] */
+ nbest = 0;
+
+ /* initialize the comparison function */
+ init_work (aa0[0], m_msg.n0, &pst, &f_str[0]);
+
+ /* open the library */
+ for (iln = 0; iln < m_msg.nln; iln++) {
+ if (openlib(m_msg.lbnames[iln],m_msg)!=1) {continue;}
+ }
+
+ /* get the library sequence and do the comparison */
+ while ((n1=GETLIB(aa1ptr,maxt,libstr,&lmark,&lcont))>0) {
+ do_work (aa0[itt], m_msg.n0, aa1, n1, itt, &pst, f_str[itt], &rst);
+
+ /* save the scores */
+ /* save the scores for statistics */
+ }
+
+ /* all done with all libraries */
+ process_hist(stats,nstats,pst);
+
+ /* sort the scores by z-value */
+ sortbestz (bptr, nbest);
+
+ /* sort the scores by E-value */
+ sortbeste (bptr, nbest);
+
+ /* print the histogram */
+ prhist (stdout,m_msg,pst,gstring2);
+
+ /* show the high scoring sequences */
+ showbest (stdout, aa0, aa1, maxn, bptr, nbest, qlib, &m_msg, pst,
+ f_str, gstring2);
+
+ /* show the high-scoring alignments */
+ showalign(outfd, aa0, aa1, maxn, bptr, nbest, qlib, m_msg, pst,
+ f_str, gstring2);
+
+ /* thats all folks !!! */
+}
+\f
+================
+complib.c /* version set as mp_verstr */
+
+main()
+printsum() /* prints summary of run (residues, entries, time) */
+void fsigint() /* sets up interrupt handler for HUP not used */
+
+================
+compacc.c
+
+void selectbest() /* select best 15000/20000 based on raw score */
+void selectbestz() /* select best 15000/20000 based on z-score */
+void sortbest() /* sort based on raw score */
+void sortbestz() /* sort based on z-score */
+void sortbeste() /* sort based on E() score - different from z-score for DNA */
+
+prhist() /* print histogram */
+
+shuffle() /* shuffle sequence (prss) */
+wshuffle() /* window shuffle */
+
+================
+showbest.c
+
+void showbest() /* present list of high scoring sequences */
+
+================
+showalign.c
+
+void showalign() /* show list of high-scoring alignments */
+void do_show() /* show an individual alignment */
+void initseq() /* setup seqc0/seqc1 which contain alignment characters */
+void freeseq() /* free them up */
+
+================
+htime.c
+
+time_t s_time() /* get the time in usecs */
+void ptime() /* print elapsed time */
+
+================
+apam.c
+
+initpam () /* read in PAM matrix or change default array */
+void mk_n_pam() /* make DNA pam from +5/-3 values */
+================
+doinit.c
+
+void initenv() /* read environment variables, general options */
+================
+initfa.c /* version set as "verstr" */
+
+alloc_pam() /* allocate 2D pam array */
+initpam2() /* fill it up from 1D pam triangle */
+f_initenv() /* function-specific environment variables */
+f_getopt() /* function-specific options */
+f_getarg() /* function specific argument - ktup */
+resetp() /* reset scoring matrix, optional parameters for DNA-DNA */
+reseta() /* reset scoring matrix, optional parameters for prot-DNA */
+query_parm() /* ask for additional program arguments (ktup) */
+last_init() /* last chance to set up parameters based on query,lib,parms */
+f_initpam() /* not used - could set parameters from pam matrix */
+
+================
+scaleswn.c
+
+process_hist() /* do statistics calculations */
+
+ proc_hist_r() /* regression fit z=1, also used by z=5 */
+ float find_z() /* gives z-score for score, length, mu, rho, var */
+ float find_zr() /* gives z-score for score, length, mu, rho, var */
+ fit_llen() /* first estimate of mu, rho, var */
+ fit_llens() /* second estimate of mu, rho, var, mu2, rho2 */
+
+ proc_hist_r2() /* regression_i fit z=4 */
+ float find_zr2() /* gives z-score for score, length, mu, rho, mu2, rho2 */
+ fit_llen2() /* iterative estimate of mu, rho, var */
+
+ proc_hist_ln() /* ln()-scaled z=2 */ /* no longer used */
+ float find_zl() /* gives z-score from ln()-scaled scores */
+
+ proc_hist_ml() /* estimate lambda, K using Maximum Likelihood */
+ float find_ze() /* z-score from lambda, K */
+
+ proc_hist_n() /* no length-scaling z=0 */
+ float find_zn() /* gives z-score from mu, var (no scaling) */
+
+ proc_hist_a() /* Altschul-Gish params z= 3 */
+ ag_parm() /* match pst.pamfile name, look_p() */
+ look_p() /* lookup Lambda, K, H given param struct */
+ float find_za()
+
+eq_s() /* returns (double)score (available for length correction) */
+ln_s() /* returns (double)score * ln(200)/ln(length) */
+
+proc_hist_r() /* regression fit z=1, also used by z=5 */
+alloc_hist() /* set up arrays for score vs length */
+free_hist() /* free them */
+inithist() /* calls alloc_hist(), sets some other globals */
+addhist() /* update score vs length hist */
+inithistz() /* initialize displayed (z-score) histogram hist[]*/
+addhistz() /* add to hist[], increment num_db_entries */
+addhistzp() /* add to hist[], don't change num_db_entries */
+prune_hist() /* remove scores from score vs length */
+update_db_size() /* num_db_entries = nlib - ntrimmed */
+set_db_size() /* -Z db_size; set nlib */
+
+double z_to_E() /* z-value to E() (extreme value distribution */
+double zs_to_E() /* z-score (mu=50, sigma=10) to E() */
+double zs_to_bit() /* z-score to BLAST2 bit score */
+
+float E_to_zs() /* E() to z-score */
+double zs_to_Ec() /* z-score to num_db_entries*(1 - P(zs))
+
+summ_stats() /* put stat summary in string */
+vsort() /* not used, does shell sort */
+calc_ks() /* does Kolmogorov-Smirnoff calculation for histogram */
+================
+dropnfa.c /* contains worker comparison functions */
+
+init_work() /* set up struct f_struct fstr - hash query */
+get_param() /* actually prints parameters to string */
+close_work() /* clean up fstr */
+do_work() /* do a comparison */
+ do_fasta() /* use the fasta() function */
+ savemax() /* save the best region during scan */
+ spam() /* rescan the best regions */
+ sconn() /* try to connect the best regions for initn */
+ kssort() /* sort by score */
+ kpsort() /* sort by left end pos */
+ shscore() /* best self-score */
+ dmatch() /* do band alignment for opt score */
+ FLOCAL_ALIGN() /* fast band score-only */
+
+do_opt() /* do an "optimized comparison */
+
+do_walign() /* put an alignment into res[] for calcons() */
+ sw_walign() /* SW alignment driver - find boundaries */
+ ALIGN() /* actual alignment driver */
+ nw_align() /* recursive global alignment */
+ CHECK_SCORE() /* double check */
+ DISPLAY() /* Miller's display routine */
+
+ bd_walign() /* band alignment driver for DNA */
+ LOCAL_ALIGN() /* find boundaries in band */
+ B_ALIGN() /* produce band alignment */
+ bg_align() /* recursively produce band alignment */
+ BCHECK_SCORE() /* double check */
+
+calcons() /* calculate ascii alignment seqc0,seqc1 from res[]*/
+calc_id() /* calculate % identity with no alignment */
+================
+nxgetaa.c
+
+getseq() /* get a query (prot or DNA) */
+getntseq() /* get a nt query (for fastx, fasty) */
+gettitle() /* get a description */
+
+int openlib() /* open a library */
+closelib() /* close it */
+GETLIB() /* get a fasta-format next library entry */
+RANLIB() /* jump back in, get description, position for getlib() */
+
+lgetlib() /* get a Genbank flat-file format next library entry */
+lranlib() /* jump back in, get description, position for lgetlib() */
+
+pgetlib() /* get CODATA format next library entry */
+pranlib() /* jump back in, get description, position for lgetlib() */
+
+egetlib() /* get EMBL format next library entry */
+eranlib() /* jump back in, get description, position for egetlib() */
+
+igetlib() /* get Intelligenetics format next library entry */
+iranlib() /* jump back in, get description, position for igetlib() */
+
+vgetlib() /* get PIR/VMS/GCG format next library entry */
+vranlib() /* jump back in, get description, position for vgetlib() */
+
+gcg_getlib() /* get GCG binary format next library entry */
+gcg_ranlib() /* jump back in, get description, position for gcg_getlib() */
+
+int scanseq() /* find %ACGT */
+
+revcomp() /* do reverse complement */
+sf_sort() /* sort superfamily numbers */
+================
+c_dispn.c
+
+discons() /* display alignment from seqc0, seqc1 */
+disgraph() /* display graphical representation, -m 4,5 */
+aancpy() /* copy a binary sequence to ascii */
+r_memcpy()
+l_memcpy()
+iidex() /* lookup ascii-encoding of residue */
+cal_coord() /* calculate coordinates of alignment ends */
+
+================
+ncbl_lib.c
+
+ncbl_openlib()
+ncbl_closelib()
+ncbl_getliba()
+ncbl_getlibn()
+ncbl_ranlib()
+src_ulong_read()
+src_long_read()
+src_char_read()
+src_fstr_read()
+newname()
+
+================
+lib_sel.c
+
+getlnames()
+libchoice()
+libselect()
+addfile()
+ulindex()
+
+================
+nrand48.c
+
+irand(time) /* initialize random number generator */
+nrand(n) /* get a number 0 - n */
+
+================
+url_subs.c
+
+void do_url1() /* setup search links */
+