Codebase list embassy-phylip / HEAD
HEAD

Tree @HEAD (Download .tar.gz)

This is the EMBOSS integrated version of PHYLIP 3.69

If you require the original PHYLIP 3.69 distribution, you should
obtain it from the author, Joe Felsenstein, at
http://evolution.gs.washington.edu/phylip/software.html

This file records the steps involved in making PHYLIP 3.69 compatible
with EMBOSS as an EMBASSY package. The procedure is relatively simple,
compared to other packages, as PHYLIP has a nicely isolated user
interface and our main task is to write the ACD interface.

1. Make a new directory, and copy in the phylip source (src/
   directory) and documentation (doc/ directory) files.

2. Move the include files (*.h) from src/ to include/

3. Create a configure.in file in the ./ directory

4. Create a Makefile.am file in the ./ src/ and emboss_acd/ directories

5. In src/Makefile.am use a prefix 'f' for every program. In this way
   the original PHYLIP package can co-exist with the EMBASSY version,
   and so can the EMBASSY PHYLIP 3.5 package, which used an 'e'
   prefix. We can claim that the 'f' stands for 'PHYLIP' although
   being the letter after 'e' is also a significant factor.

6. Add files in the emboss_acd directory (initially from the phylip
   embassy package) with the 'f' prefix.

7. In include/phylip.h rename VERSION to ORIGINALVERSION as our new
   ./configure will define it. Put the same version (3.69) into
   ./configure

8. Looks like PHYLIP 3.69 has new library source code - these functions
   were generally in the main program *.c files before. We add these as extra
   sources in Makefile.am

9. PHYLIP 3.69 has programs we did not build in PHYLIP 3.5. This time,
   we build them all (for now).

10. Put the ACD interface into each program:
    (a) comment out with the existing getoptions function
        put /* */ around it
        put // on every line so we know it is changed
        change /* */ to /# #/
    (b) add an emboss_getoptions function in main (after "init()")
        to initialise the same variables ad the original getoptions
        and to use ajAcdGet calls
    (c) use the modified openfile calls in the remaining code

11. Options are also defined in a set of functions in phylip.c
    Replace these with calls to standard ACD options. EMBOSS
    validation will catch any that are not defined in the ACD file.

12. Make sure we add ajExit() at the end of main to test for unused
    ACD options and final debug output.

13. Use perl scriptsd to check for options in the source (prompts in
    getoptions and calls to the phylip.c "init" functions. Compare
    these to the ACD files from PHYLIP 3.5 and update accordingly.

14. Make test cases using the test data from the phylip doc/*.html
    examples. Use these to test both phylip 3.69 and phylip 3.5 and
    note any differences.

15. Some programs allow multiple input datasets. This means a
    seqsetall ACD type which we don't have yet. Set the maximum to 1
    for these, but allow unlimited datasets where the same option
    -datasets refers to a weight file which is a simple infile that we
    let PHYLIP read.

16. Convert printf and exxit(-1) to use ajErr for the message and make
    exxit(-1) call ajExitBad()

17. Programs end with printf("Done") - and other progress reports.
    Comment them out.

18. Made new ACD data types for Dist, Freq, Properties, Tree
    and tried to read all their many file formats.

19. Made fcontrast work with the new style for frequency and tree
    data. This meant parsing trees from strings instead of files (lots
    of changes to phylip.c treeread onwards), although the frequency
    part was (so far) pretty simple.

20. So remove the old functions that read files (all of them!)
    Pass trees as char*
    Carefully put Freq->Data into new arrays (in input order :-)
    Keep ACD minimal for now.