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.