home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / APPS / STATISTI / MVSP2.ZIP / PLOT14.DOC < prev    next >
Encoding:
Text File  |  1990-07-15  |  56.0 KB  |  1,146 lines

  1. ===============================================================
  2. Note to MVSP users:  This document describes the general use of 
  3. PLOTGRAM and PLOTREE (the latter is not included with MVSP), as 
  4. written by Chris Meachem.  There are some added comments by Joe 
  5. Felsenstein that deal with his versions of the programs (DOTGRAM) for 
  6. dot matrix printers.  At the end is the specific information about 
  7. using PLOTGRAM itself.  
  8.  
  9. I have modifed the documentation slightly to reflect the changes I 
  10. have made to PLOTGRAM, mainly by merging DOTGRAM and PLOTGRAM and 
  11. adding a few more options.  
  12.  
  13. For specific details about how to use PLOTGRAM with the treefiles 
  14. produced by MVSP see the MVSP documentation.  - WLK
  15.  
  16. ===============================================================
  17.  
  18. Copyright 1986 by Christopher A. Meacham.  Permission is granted 
  19. to copy, distribute, and modify this document provided that (1) 
  20. this copyright message is not removed and (2) no fee is charged 
  21. for this document.
  22.  
  23.      (for versions 1.4 of PLOTGRAM, distributed with MVSP 2.0)
  24.  
  25.  
  26.  
  27.          GENERAL DOCUMENTATION FOR THE GRAPHICS PROGRAMS
  28.                       PLOTREE AND PLOTGRAM
  29.  
  30.                      Christopher A. Meacham
  31.             Botany Department, University of Georgia,
  32.                     Athens, GA 30602, U.S.A.  
  33.  
  34.              Present address:  University Herbarium, 
  35.       University of California, Berkeley, CA 94720, U.S.A.
  36.  
  37.      Plotree and Plotgram are flexible graphics programs that are 
  38. designed to draw tree diagrams of widely different formats on a 
  39. variety of graphics devices and that are capable of being run on 
  40. computers of nearly all sizes from microcomputers to large mainframes.  
  41. They are written in a very standard subset of the Pascal programming 
  42. language.  The two programs accept as input a description of a tree 
  43. diagram and produce as output the device-dependent graphics 
  44. instuctions that cause the diagram to be drawn.  The user can control 
  45. the action of Plotree and Plotgram by setting various parameters.  
  46. Plotree draws "ball and stick" trees and Plotgram draws phenograms and 
  47. cladograms.  The two programs are very similar in their operation.  
  48. This document covers those aspects that are common to the two 
  49. programs.  The specific documentation for each program describes in 
  50. more detail the style of tree drawn by the program and how the user 
  51. controls the form of the tree. 
  52.  
  53. NOTE TO USERS OF PREVIOUS VERSIONS
  54.  
  55.      At the conference among producers of phylogenetic software that 
  56. was held last week (24 June 1986) at the meetings of the Society for 
  57. the Study of Evolution at Durham, NH, a standard format for machine-
  58. readable trees was accepted.  This format will be described in detail 
  59. in a forthcoming issue of the Journal of Classification.  Versions 1.3 
  60. of Plotree and Plotgram incorporate some changes toward this standard.  
  61. Basically, the trees required by versions 1.3 adhere to a subset of 
  62. the full standard and will thus be readable to programs that implement 
  63. the full standard.  The next release of Plotree and Plotgram will 
  64. implement the full standard.  The side-effect of this change is that 
  65. trees read by versions 1.0 through 1.2 of the two programs are not 
  66. readable by versions 1.3.  Trees under the new standard are terminated 
  67. by a ';', not a '*'.  The symbol that is replaced by a blank in tree 
  68. labels is a '_', not a '#'.  If you have trees to plot that you 
  69. produced for older versions of the programs, these two changes can be 
  70. made by relatively painless editing.  The other major change to the 
  71. format is that the subtree description associated with a node comes 
  72. before, rather than after, the labels and length associated with the 
  73. node.  This standardization really doesn't matter to any version of 
  74. the two programs; all versions read both formats.  Following a 
  75. suggestion by David L. Swofford, a '*' as the first non-blank 
  76. character of a line in the parameter file indicates a comment.  
  77.  
  78. OVERVIEW OF PLOTREE AND PLOTGRAM EXECUTION
  79.  
  80.          The user supplies input to Plotree or Plotgram in two files 
  81. that are designated "parmfile" and "treefile" in the source code.  
  82. Parmfile is read first and contains instructions that cause the 
  83. program to change various parameter settings.  These parameters 
  84. indicate to the program the plotter being used, the size and position 
  85. on the plotting surface of the tree to be drawn, how the tree is to be 
  86. labeled, etc.  Treefile is read second and contains a description of 
  87. the tree the user wishes drawn.  After treefile is read, the program 
  88. calculates the layout of the tree and finally writes the plotter 
  89. commands to the output file, "plotfile."  Plotfile may either be 
  90. attached directly to the plotting device or may be a disk file that is 
  91. later copied to the plotter.  A second output file, the Pascal 
  92. standard file "OUTPUT," is used to display messages about the current 
  93. status of the program and for error messages.  OUTPUT should normally 
  94. be attached to the console.  Another input file, "fontfile," is used 
  95. to read the font descriptions used to generate the text plotted by 
  96. Plotree or Plotgram.  This file is attached to one of the five disk 
  97. files supplied with Plotree and Plotgram, "FONT1" through "FONT5," 
  98. depending on which font is to be used to label the tree. 
  99.  
  100. GETTING PLOTREE AND PLOTGRAM TO RUN ON YOUR COMPUTER
  101.  
  102. (Users of MVSP note: PLOTGRAM has already been compiled for you so 
  103. there is no need to modify the program as outlined below unless you 
  104. wish to make changes. - WLK)
  105.  
  106.      Several steps need to be taken to get these programs to run on 
  107. your computer.  These steps are outlined below; many are discussed in 
  108. more detail further on.  If you plan on using both programs, it is a 
  109. good idea to keep careful notes on the changes made to the first one 
  110. so that the same changes can easily be made to the other program.  
  111. These notes will also be of use in adapting future versions of the two 
  112. programs. 
  113.  
  114.      1.  Make changes, if necessary, to adapt the program to the 
  115. compiler you are using.  See instructions below. 
  116.  
  117.      2.  Add code, if necessary, to drive the plotter or other 
  118. graphics device you intend to use.  See instructions below. 
  119.  
  120.      3.  If your compiler cannot handle a single file of source code 
  121. as long as these programs (e.g. Turbo Pascal), you will need to divide 
  122. the original source file into two or three files.  Consult your 
  123. compiler manual. 
  124.  
  125.      4.  Some compilers may not be able to handle procedures that are 
  126. as long as some in these programs.  If this happens at all, it will 
  127. most likely happen in the procedure "plot."  Because it is not likely 
  128. that you will need (or want) to drive all the devices supported, you 
  129. may delete the code pertaining to plotters you don't intend to use, or 
  130. you may simply put comment delimiters ('(*' and '*)') around that code 
  131. you wish ignored.  The procedure "plot" can be drastically reduced in 
  132. size this way. 
  133.  
  134.      5.  After the program compiles successfully, you will need to set 
  135. up the two input files, parmfile and treefile, to test your 
  136. installation of the program.  The parameters, which are put in 
  137. parmfile, and their format are described in detail below.  It is a 
  138. good idea to use mostly default values of parameters at this stage.  
  139. The only parameters that you may really need to set are PLOTTER, 
  140. XUNITS, YUNITS, XSIZE, YSIZE, XPOSITION, YPOSITION, XOPTION, and 
  141. YOPTION.  For this test, use only a very simple tree description in 
  142. treefile, for example 'A(B);' (the apostrophes are NOT part of the 
  143. tree description).  For fuller discussion of the tree description 
  144. format, see below. 
  145.  
  146.      6.  If it compiles successfully, you may still have problems 
  147. running these programs because a fairly large amount of memory is 
  148. required to store the fonts.  You will definitely have problems if you 
  149. compile with CP/M Turbo Pascal on a 64k system (e.g. an Osborne 1).  
  150. This problem will probably show up as a "heap/stack collision" error 
  151. during execution.  In this case, you must reduce the size of the array 
  152. "font" by changing the constant "fontsize" at the beginning of the 
  153. program.  If you reduce the size of the array "font," you must, of 
  154. course, only use those fonts that will fit into the smaller array.  
  155. See discussion of the FONT parameter below.  You will probably not 
  156. encounter problems if you have 128k or more of memory available. 
  157.  
  158.      7.  Once the program is successfully running, you can begin 
  159. drawing your own trees.  Follow the specific instructions for Plotree 
  160. or Plotgram as described in the documentation for that program. 
  161.  
  162. ADAPTING PLOTREE AND PLOTGRAM TO YOUR PASCAL COMPILER
  163.  
  164.      The first task is to determine what changes need to be made to 
  165. the program source code.  Usually these will be restricted to input-
  166. output statements in the main program, which is found at the end of 
  167. the source listing.  If your Pascal compiler needs "ASSIGN" 
  168. statements, you will need to add them.  Turbo Pascal, which is a 
  169. commonly used Pascal compiler for microcomputers, needs these ASSIGN 
  170. statements.  Some compilers need to be told that these programs use 
  171. recursive procedures, that is, procedures that call themselves.  In 
  172. the CP/M version of Turbo Pascal, this is done by inserting the 
  173. compiler directive '(*$A-*)' as the first line of the program.  (Note 
  174. that the apostrophes are NOT part of the compiler directive.).  This 
  175. is not necessary for IBM versions of Turbo Pascal.
  176.  
  177. MODIFYING PLOTREE AND PLOTGRAM TO DRIVE A NEW PLOTTER
  178.  
  179.      You will need to determine what plotter or plotters you will use.  
  180. Versions 1.4 of Plotree and Plotgram drive Hewlett Packard, Calcomp, 
  181. Tektronix, and Bausch and Lomb (Houston Instruments) plotters, as 
  182. well as a variety of IBM-PC graphics adaptors, but in general, very 
  183. little code needs to be added to drive other plotters.  Anyone who is 
  184. familiar with the requirements of the plotter and who knows a little 
  185. Pascal should have no difficulty in making the necessary modifications 
  186. to these programs.  Many computing centers have utility programs that 
  187. will accept Calcomp or Tektronix instructions as input and will drive 
  188. the plotting devices available at that center.  If you are planning to 
  189. run these programs in a mainframe environment like this, you may not 
  190. need to modify them to drive the plotter directly.  Check with your 
  191. computing center staff to see what options you have.  
  192.        
  193.      If you find that you do need to modify the programs to drive your 
  194. plotter, relatively few changes are necessary.  Plotree and Plotgram 
  195. already recognize a plotter parameter of 'O' (which stands for 
  196. "other").  So, if you add your code at the appropriate places, you can 
  197. specify a plotter type of 'O' and these programs will generate the 
  198. plotter commands you need.  The crucial change and the only change 
  199. that MUST be made is the modification to the procedure "plot" that 
  200. generates the device-dependent plotter commands.  (The structure of 
  201. each program is described in Appendix 1 in the documentation for the 
  202. respective program.  These appendices can be used to locate the 
  203. procedures that need to be modified.)  The code for your plotter 
  204. should go at the place indicated near the end of procedure "plot."  If 
  205. your plotter needs to be placed in a standard configuration before 
  206. the tree is drawn, or if a particular pen needs to be selected before 
  207. any other commands are sent to the plotter, these commands can be put 
  208. in procedure "initplotter."  Procedure "initplotter" is called before 
  209. any commands to draw are issued.  In a similar way, "finishplotter" 
  210. can be used to issue any commands after the tree is drawn.  Procedure 
  211. "changepen" can be used to change to a different pen when labeling the 
  212. nodes.  Fonts 2 through 5 will look better if a thinner pen is used 
  213. for labeling than the pen used to draw the tree diagram itself.  The 
  214. standard parameters that are constant for a particular plotter can be 
  215. made the default values for that plotter by inserting code in the 
  216. procedure "plotrparms."  The parameters XUNITS and YUNITS should be 
  217. set in this way. 
  218.  
  219. INPUT FORMAT OF TREE DESCRIPTIONS
  220.  
  221.      Both programs accept tree descriptions as input from the file 
  222. "treefile."  The programs require a nested parentheses notation to 
  223. describe the tree to be drawn.  The unit in this notation might be 
  224. termed a "node description" because it describes the tree at a single 
  225. node.  A node description consists of (1) the label of the node and 
  226. (2) if there exists any immediately descendant node or nodes, a list 
  227. of the node descriptions for the immediately descendant nodes.  This 
  228. list of node descriptions is enclosed by parentheses and the 
  229. descendant node descriptions are separated by commas.  It is easy to 
  230. see that this notation results in a nested series of parentheses.  The 
  231. tree description is terminated by a ';'.  Here are some trees and 
  232. their notation: 
  233.  
  234.                                          C   D   F   G
  235.                                           \ /     \ / 
  236.                                    C       B       E
  237.        B    B     C   B  C  D      !        \     /
  238.        !     \   /     \ ! /       B         \   /
  239.        !      \ /       \!/        !          \ /
  240.        A       A         A         A           A
  241.  
  242. Tree   1       2         3         4           5
  243.  
  244.  
  245. Notation for the above trees:
  246.  
  247.                       1.  (B)A;
  248.                       2.  (B,C)A;
  249.                       3.  (B,C,D)A;
  250.                       4.  (B(C)B)A;
  251.                       5.  ((C,D)B,(F,G)E)A;
  252.  
  253. None of the nodes are required to be labeled.  For example, if all of 
  254. the internal nodes (that is, nodes A, B, and E) on tree 5 above were 
  255. unlabeled, then the notation would be 
  256.  
  257.                          ((C,D),(F,G));
  258.  
  259. If all labels were removed from tree 5, the notation would be
  260.  
  261.                            ((,),(,));
  262.  
  263. Labels may consist of any sequence of upper- or lower-case alphabetic 
  264. characters, numeric characters, or any of these characters:  .!?-*.  
  265. If a blank (space) is desired within a label, an underline ('_') 
  266. should be used.  The programs will replace the underline with a blank 
  267. (' ') when plotting the label.  Other special characters will not be 
  268. plotted.  The present version of Plotree will truncate labels that are 
  269. longer that three characters.  Plotgram truncates labels that are 
  270. longer than 25 characters.  (This maximum length of labels is 
  271. controlled by a constant "maxnch" at the beginning of each program.)  
  272. More than one label may be associated with a single node, however the 
  273. current version of Plotree will only plot the first label.  Plotgram 
  274. will transform the tree so that all labels are plotted (see Plotgram 
  275. documentation).  Multiple labels are separated by blanks. 
  276.  
  277.      Lengths of internodes may also be specified.  The length of an 
  278. internode is associated with the node above that internode.  The 
  279. length follows the node label and is separated from the node label by 
  280. a colon (":").  For example, the tree 
  281.  
  282.                                     C
  283.                            B       /   
  284.                             \     /  
  285.                          1.5 \   / 2.0
  286.                               \ /    
  287.                                A
  288.  
  289. would have the notation
  290.  
  291.                        (B:1.5,C:2.0)A;
  292.  
  293. If the tree were unlabeled it would have the notation  
  294.  
  295.                         (:1.5,:2.0);
  296.  
  297. Lengths may have decimal points or not.    The length may begin with a 
  298. minus sign ('-') or plus sign ('+').  Blanks may appear anywhere 
  299. within the tree notation except within labels or within lengths (e.g. 
  300. '1. 52' is not a valid length). 
  301.  
  302.      Any number of tree descriptions may be placed in treefile and a 
  303. tree description may continue to as many lines as necessary, but each 
  304. tree description must begin on a new line. 
  305.  
  306. HOW TO WRITE TREE DESCRIPTIONS
  307.  
  308.      A simple mechanical procedure can be used to generate by hand the 
  309. description of a tree.  The terms "ancestor," "descendant," and 
  310. "sibling" must be defined for nodes on a tree.  The ancestor of a node 
  311. is the node immediately below it on the tree.  In tree 5 above, node A 
  312. is the ancestor of node B.  The root of the tree is the single node 
  313. that has no ancestor.  A descendant of a node is a node that is 
  314. immediately above it on the tree.  In tree 5, node B is a descendant 
  315. of node A.  A node is a sibling of another node if they have the same 
  316. ancestor node.  In tree 5, node B and node E are siblings.  
  317.  
  318.      In a procedure called a tree traversal, the all nodes of a tree 
  319. are visited in a well-defined sequence and as we move about the tree 
  320. we can generate the tree description.  If we are at a particular node, 
  321. we first vist any descendant node that has not yet been visited.  If 
  322. all descendant nodes have been visited, then we visit any sibling 
  323. nodes that have not yet been visited.  Only if all descendants and all 
  324. siblings of the particular node have been visited, do we return to the 
  325. ancestor of the particular node.  Thus in this process, we visit each 
  326. node only twice:  once on the way up the tree to its descendants and 
  327. once on the way back down the tree after all its descendants have been 
  328. visited.  When we move up to a descendant, we write a left parenthesis 
  329. ('(').  When we move over to a sibling, we write a comma (',').  When 
  330. we move down to an ancestor, we write a right parenthesis (')').  The 
  331. last time we visit a node we write the label of the node (and the 
  332. associated length or level, if appropriate).  We begin the process by 
  333. visiting the root of the tree, and we terminate when the root is 
  334. visited the second time.  The description is terminated by a semicolon 
  335. (';').  The reader may wish to practice on the five trees above. 
  336.  
  337. USING THE PARAMETERS
  338.  
  339.      The action of Plotree and Plotgram is controlled by parameters 
  340. that are read by the programs from a file that is separate from the 
  341. tree descriptions.  The user has a great deal of control over the 
  342. programs by means of these parameters, but it is important to realize 
  343. that most of these parameters simply alter default values that will 
  344. result in generally acceptable diagrams.  When first using the 
  345. programs, it is advisable to set only as few parameters as necessary 
  346. and to ignore the rest.  The most critical parameters are those that 
  347. control the plotter and determine the size and position of the diagram 
  348. on the plotting surface.  These are the same for both programs and are 
  349. described below.  The other parameters allow the user to modify 
  350. details of the diagrams drawn.  These parameters are described in the 
  351. documentation for each program.  Do not set these parameters until you 
  352. are successful in getting at least one simple tree drawn without them.  
  353. The parameters that need careful attention in the beginning are 
  354.  
  355.                              XUNITS
  356.                              YUNITS
  357.                              XSIZE
  358.                              YSIZE
  359.                              XPOSITION
  360.                              YPOSITION
  361.                              XOPTION
  362.                              YOPTION
  363.                              ROTATION 
  364.  
  365. The action of these parameters is described below.  
  366.  
  367. GENERAL FORMAT OF PARAMETER FILE    
  368.  
  369.      The parameters that control Plotree and Plotgram are placed in 
  370. "parmfile," a separate input file from the file that contains the tree 
  371. descriptions.  Each line in parmfile sets a single parameter.  The 
  372. name of the parameter is given first followed by the value to be given 
  373. that parameter.  Any number of blanks may preceed the parameter name.  
  374. No blanks may occur within the parameter name.  The parameter name may 
  375. be in upper- or lower-case letters.  At least one blank must separate 
  376. the parameter name from the parameter value.  The kind of values that 
  377. parameters may have depends on the parameter.  The legitimate 
  378. parameter values are described below.  If the first non-blank 
  379. character is a '*', then the entire line is treated as a comment and 
  380. ignored.  The programs only use the first two letters of the parameter 
  381. name to determine which parameter to set.  However, it is recommended 
  382. that the full parameter name be used for better mnemonic value.  The 
  383. parameters can be grouped into five major classes according to the 
  384. aspect of the programs that they control: 
  385.  
  386.             1.  Plotter parameters    
  387.                   PLOTTER             
  388.                   XUNITS                    
  389.                   YUNITS                    
  390.  
  391.             2.  Size parameters
  392.                   SIZEMODE     
  393.                   XSIZE        
  394.                   YSIZE        
  395.                   MAXNODE      
  396.  
  397.             3.  Position and rotation parameters
  398.                   XPOSITION  
  399.                   YPOSITION  
  400.                   XOPTION    
  401.                   YOPTION    
  402.                   ROTATION   
  403.  
  404.             4.  Label parameters
  405.                   FONT             
  406.                   PENCHANGE        
  407.             
  408.             5.  Program control
  409.                   STARTMODE
  410.  
  411.  
  412. 1.  PLOTTER PARAMETERS
  413.  
  414. PLOTTER - This parameter identifies the plotter that will plot the 
  415. tree and thus controls the kind of plotter commands that are produced 
  416. by Plotree or Plotgram.  The values PLOTTER may have are single 
  417. letters.  The legitimate values and the plotters they identify are 
  418.  
  419.             'H' - Hewlett Packard 7470 or 7475
  420.             'C' - Calcomp
  421.             'T' - Tektronix 4010
  422.             'B' - Bausch and Lomb (formerly Houston Instruments)
  423.             'S' - IBM-PC video output, CGA, EGA, VGA, or Hercules 
  424.             'A' - Video Output to ATT-6300 or Compaq Portable III (640x400)
  425.             'P' - IBM-PC video output, Professional Graphics (640x480)
  426.             'R' - DEC ReGIS protocol
  427.             'L' - Postscript laser printer
  428.  
  429.      The PLOTTER parameter should always be the first parameter in 
  430. parmfile because it changes the values for other parameters.  The 
  431. default plotter is Hewlett Packard.  These are the default values that 
  432. are set for the various plotters. 
  433.  
  434.      Hewlett Packard:                 Default value
  435.                   XUNITS                  400.0 
  436.                   YUNITS                  400.0
  437.                   XSIZE                    24.0 
  438.                   YSIZE                    18.0
  439.                   XPOSITION                12.85
  440.                   YPOSITION                 9.55
  441.                   XOPTION                    C
  442.                   YOPTION                    C
  443.                   ROTATION                  0.0
  444.  
  445.      Calcomp:                        
  446.                   XUNITS                   39.37
  447.                   YUNITS                   39.37
  448.                   XSIZE                    25.0
  449.                   YSIZE                    25.0
  450.                   XPOSITION                12.5
  451.                   YPOSITION                 0.0
  452.                   XOPTION                    C
  453.                   YOPTION                    A
  454.                   ROTATION                  0.0
  455.  
  456.      Tektronix:
  457.                   XUNITS                   50.0
  458.                   YUNITS                   50.0
  459.                   XSIZE                    20.46
  460.                   YSIZE                    15.6
  461.                   XPOSITION                10.23
  462.                   YPOSITION                 7.8
  463.                   XOPTION                    C
  464.                   YOPTION                    C
  465.                   ROTATION                  0.0
  466.  
  467.      Bausch and Lomb (Houston Instruments):
  468.                   XUNITS                  100.0
  469.                   YUNITS                  100.0
  470.                   XSIZE                    24.5
  471.                   YSIZE                    17.5
  472.                   XPOSITION                12.5
  473.                   YPOSITION                 9.0
  474.                   XOPTION                    C
  475.                   YOPTION                    C
  476.                   ROTATION                  0.0
  477.  
  478.      IBM-PC video output & ATT-6300/Compaq Portable III 
  479.      With these options, the program detects which video adaptor is 
  480. present, then chooses the highest possible resolution.  The values for 
  481. xunits and yunits will vary depending on the resolution.  
  482.                   XUNITS                   varies
  483.                   YUNITS                   varies  
  484.                   XSIZE                    24.0         
  485.                   YSIZE                    16.0
  486.                   XPOSITION                12.5
  487.                   YPOSITION                 8.75
  488.                   XOPTION                    C
  489.                   YOPTION                    C
  490.                   ROTATION                  0.0
  491.  
  492.      IBM-PC Professional Graphics video output (640x480):
  493.                   XUNITSPERCM              26.6   
  494.                   YUNITSPERCM              26.6   
  495.                   XSIZE                    23.5         
  496.                   YSIZE                    17.5
  497.                   XPOSITION                 0.0
  498.                   YPOSITION                 0.0
  499.                   XOPTION                    C
  500.                   YOPTION                    C
  501.                   ROTATION                  0.0
  502.  
  503.      DEC'S ReGIS protocol:
  504.                   XUNITSPERCM               1.0    
  505.                   YUNITSPERCM               1.0    
  506.                   XSIZE                   750.0        
  507.                   YSIZE                   450.0        
  508.                   XPOSITION               399.0    
  509.                   YPOSITION               239.0    
  510.                   XOPTION                    C
  511.                   YOPTION                    C
  512.                   ROTATION                  0.0
  513.  
  514.      Postscript laser printer:
  515.                   XUNITSPERCM              28.346456693
  516.                   YUNITSPERCM              28.346456693
  517.                   XSIZE                    15.24
  518.                   YSIZE                    22.86
  519.                   XPOSITION                11.43
  520.                   YPOSITION                13.97
  521.                   XOPTION                    C
  522.                   YOPTION                    C
  523.                   ROTATION                  0.0
  524.  
  525. PRINTER - The versions of PLOTGRAM and PLOTREE modifed for dot matrix 
  526. printers by Joe Felsenstein use the keyword PRINTER to specify the 
  527. type of printer used.  The default values for the parameters are as 
  528. follows:
  529.  
  530.      Citoh:
  531.                   XUNITSPERCM              28.346
  532.                   YUNITSPERCM              28.346
  533.                   XSIZE                    19.0
  534.                   YSIZE                    22.0
  535.                   XPOSITION                11.0
  536.                   YPOSITION                 0.0
  537.                   XOPTION                    C
  538.                   YOPTION                    A
  539.                   ROTATION                  0.0
  540.  
  541.      Epson 9-pin:
  542.                   XUNITSPERCM              47.245
  543.                   YUNITSPERCM              28.346
  544.                   XSIZE                    19.0
  545.                   YSIZE                    22.0
  546.                   XPOSITION                 9.5
  547.                   YPOSITION                 0.0
  548.                   XOPTION                    C
  549.                   YOPTION                    A
  550.                   ROTATION                  0.0
  551.  
  552.      Okidata:
  553.                   XUNITSPERCM              56.692
  554.                   YUNITSPERCM              28.346
  555.                   XSIZE                    19.0
  556.                   YSIZE                    22.0
  557.                   XPOSITION                 9.5
  558.                   YPOSITION                 0.0
  559.                   XOPTION                    C
  560.                   YOPTION                    A
  561.                   ROTATION                  0.0
  562.  
  563.      Toshiba 24-pin:
  564.                   XUNITSPERCM              70.866
  565.                   YUNITSPERCM              70.866
  566.                   XSIZE                    19.0
  567.                   YSIZE                    25.0
  568.                   XPOSITION                10.5
  569.                   YPOSITION                 0.0
  570.                   XOPTION                    C
  571.                   YOPTION                    A
  572.                   ROTATION                  0.0
  573.  
  574.  
  575. XUNITS, YUNITS - These two parameters describe the resolution of the 
  576. plotter to be used in terms of number of plotter units (steps) per 
  577. centimeter in the x-direction and y-direction respectively.  
  578. Legitimate values are positive real numbers.  For most plotters, those 
  579. that have a one-to-one aspect ratio, these parameters will be set to 
  580. the same value.  Many video graphics display devices have aspect 
  581. ratios that are not one-to-one, in which case the number of plotter 
  582. steps required to move one centimeter in the x-direction will be 
  583. different from the number of plotter steps required to move the same 
  584. distance in the y-direction.  If the trees you plot appear distorted 
  585. and you have set XUNITS and YUNITS to the same value, then your 
  586. plotting device does not have a one-to-one aspect ratio and these 
  587. parameters should be set to different values.  Once you have 
  588. determined the correct values for your plotting device, these 
  589. parameters need never be changed and you may consider modifying your 
  590. version of Plotree to make them the default values for your plotter.  
  591. Values need not be integers; for example, a Calcomp plotter that has 
  592. 100 plotter units (steps) per inch has 39.37 units per centimeter. 
  593.  
  594. 2.  SIZE PARAMETERS
  595.  
  596. SIZEMODE - (This applies to Plotree only.  SIZEMODE cannot be switched 
  597. off for Plotgram.)  This parameter determines whether the tree is to 
  598. be drawn at the scale determined by the tree form parameters or the 
  599. tree is to be drawn at the scale determined by the XSIZE and YSIZE 
  600. parameters.  Legitimate values are 'N', scale is determined by the 
  601. tree form parameters and 'Y', scale is determined by XSIZE and YSIZE 
  602. parameters.  XSIZE and YSIZE are described below.  The tree form 
  603. parameters are described in the specific documentation for Plotree and 
  604. Plotgram. 
  605.  
  606. XSIZE, YSIZE - These parameters describe the dimensions, in 
  607. centimeters, of a box.  If SIZEMODE has value 'Y', the tree will be 
  608. rescaled so that it is as large as possible and still fits in a 
  609. circumscribed box XSIZE by YSIZE.  Legitimate values are positive real 
  610. numbers.  XSIZE specifies the x-dimension of the box, YSIZE, the y-
  611. dimension.  The rescaled tree will not exceed XSIZE centimeters in the 
  612. x-direction nor YSIZE centimenters in the y-direction and will exactly 
  613. equal at least one of XSIZE or YSIZE in the appropriate direction.  If 
  614. SIZEMODE has value 'N', then XSIZE and YSIZE have no effect.  
  615. (SIZEMODE, in effect, always has value 'Y' in Plotgram.) 
  616.  
  617. 3.  POSITION AND ROTATION PARAMETERS
  618.  
  619. XPOSITION, YPOSITION - These parameters specify the position on the 
  620. plotting surface at which the tree is to be drawn.  The position is 
  621. indicated in centimeters from the origin of the plotting device.  
  622. Legitimate values are real numbers.  The exact mode of action depends 
  623. on XOPTION and YOPTION; see below.  
  624.      These parameters allow the user to specify the normal position of 
  625. a tree on the graphics device or allow the user to accurately place 
  626. several trees on a single plot. 
  627.  
  628. XOPTION, YOPTION - These parameters specify how the XPOSITION and 
  629. YPOSITION, respectively, of a tree are to be determined.  Legitimate 
  630. values are single upper-case letters: 
  631.  
  632.    For XOPTION:
  633.      
  634.      'O' - XPOSITION indicates the center of the root node
  635.      'C' - tree is centered in the x-direction about XPOSITION
  636.      'L' - tree lies to the left of XPOSITION, rightmost edge of
  637.             tree is at XPOSITION
  638.      'R' - tree lies to the right of XPOSITION, leftmost edge of
  639.             tree is at XPOSITION
  640.  
  641.    For YOPTION:
  642.  
  643.      'O' - YPOSITION indicates the center of the root node
  644.      'C' - tree is centered in the y-direction about YPOSITION
  645.      'A' - tree lies above YPOSITION, bottom edge of tree is at
  646.             YPOSITION
  647.      'B' - tree lies below YPOSITION, top edge of tree is at 
  648.             YPOSITION
  649.  
  650. ROTATION - This parameter allows the tree to be rotated with respect 
  651. to the plotter coordinate system.  ROTATION specifies the angle, in 
  652. degrees, through which the tree is to be rotated.  Legitimate values 
  653. are real numbers.  Positive values indicate clockwise rotations. 
  654.      Some plotters have a plotting bed that is longer in the y-
  655. direction than in the x-direction.  Because trees plotted by Plotree 
  656. are usually taller than they are wide, it may be advisable to rotate 
  657. them through 90.0 degrees, so that the top of the tree extends in the 
  658. positive y-direction. 
  659.      Note that XPOSITION, XOPTION, and the corresponding y parameters 
  660. always refer to the plotter coordinate system and are not affected by 
  661. ROTATION.  To center an unrotated tree about its own vertical axis, 
  662. one would use an XOPTION of 'C'.  A tree that has been rotated through 
  663. 90.0 degrees would be centered about its own vertical axis by using a 
  664. YOPTION of 'C'. 
  665.   
  666. 4.  LABEL PARAMETERS
  667.  
  668. FONT - This parameter specifies which of five character fonts will be 
  669. used for labels.  Legtimate values are the characters '1', '2', '3', 
  670. '4', and '5'.  The fonts that are used are taken from the Hershey 
  671. fonts, which were created by Alan V. Hershey in the 1960s while he was 
  672. working at the National Bureau of Standards.  Each font includes the 
  673. upper-case letters, lower-case letters,  arabic numerals, period 
  674. ("."), comma (","), colon (":"), exclamation point ("!"), question 
  675. mark ("?"), slash("/"), parentheses ("(" and ")"), hyphen ("-"), 
  676. asterisk ("*"), and blank (" ").  FONT 1 specifies the single-stroke 
  677. character font, simplex roman.  FONT 2 specifies the double-stroke 
  678. character font, duplex roman.  FONT 3 specifies the multi-stroke 
  679. character font, complex roman.  FONT 4 specifies the double-stroke 
  680. character font, duplex italic.  FONT 5 specifies the triple-stroke 
  681. character font, complex italic.  These fonts require varying amounts 
  682. of storage.  FONT 1 requires 1165 integers in storage; FONT 2, 2162 
  683. integers; FONT 3, 3190 integers; FONT 4, 2173 integers; FONT 5, 3200.  
  684. If necessary, the amount of storage required by Plotree can be 
  685. substantially reduced by setting the constant "fontsize" at the 
  686. begining of the program code to accomodate only the smallest font, 
  687. FONT 1.  If this is done, of course, only FONT 1 can be used. 
  688.  
  689. PENCHANGE - This parameter specifies whether the plotter pen is to be 
  690. changed before plotting the label on plotters that allow automatic pen 
  691. changes.  Legitimate values are 'Y', which causes the pen to be 
  692. changed before plotting the label, and 'N', which causes the plotter 
  693. to use the same pen that is used to draw the nodes and internodes of 
  694. the tree.  Trees will look better for publication if a wider pen is 
  695. used to draw the nodes and internodes that make up the tree and a 
  696. narrower pen is used to draw the node labels, particularly if FONT 3 
  697. or FONT 5 is used.  
  698.  
  699. 5.  PROGRAM CONTROL
  700.  
  701. STARTMODE - This parameter determines whether the program pauses 
  702. before writing commands to plotfile.  If STARTMODE has the value 'Y', 
  703. then the program will pause until the user hits enter (return) from 
  704. the keyboard.  If STARTMODE has the value 'N', then the program will 
  705. not pause.  The default value is 'N'.     
  706.  
  707. PLANS FOR FUTURE DEVELOPMENT OF PLOTREE AND PLOTGRAM
  708.  
  709.      For Plotree, future versions are planned that will
  710.      
  711.      1.  draw undirected trees,
  712.      2.  put arrows on the internodes, and
  713.      3.  drive video displays.
  714.  
  715.      For Plotgram, future versions are planned that will
  716.  
  717.      1.  draw a scale for the phenogram or phylogram, and
  718.      2.  drive video displays.
  719.  
  720. HOW USERS OF PLOTREE AND PLOTGRAM CAN HELP THEM BECOME BETTER
  721.  
  722.      By writing me (C. Meacham, Univ. Herbarium, Univ. of California, 
  723. Berkeley, CA 94720) you can make these program more useful to you and 
  724. to others.  Notify me of any special problems you encounter getting 
  725. them running on your system, especially if you successfully solve 
  726. these problems.  I can incorporate notes on potential problems and 
  727. their solution into this documentation.  If you develop code to drive 
  728. other plotters, let me know and I can put the code in the versions I 
  729. distribute or list it in this documentation.  If you cannot get these 
  730. programs to produce satisfactory drawings of a particular diagram, 
  731. send me the tree description and describe the failings of the program.  
  732. I will try to modify future versions to make them more successful in 
  733. drawing the kinds of diagrams people need them for. 
  734.  
  735. ACKNOWLEDGMENTS
  736.  
  737.      The first version of Plotree was written in 1978 at the 
  738. University of Michigan, first in PL/I, then in Fortran.  The 
  739. University of Michigan Computer Center provided free computing time.  
  740. The first Pascal version was written in Joe Felsenstein's lab during 
  741. the summer of 1984 while I was on leave from the University of Georgia 
  742. and was subsidized by the UGA Botany Department and by a DOE grant to 
  743. Felsenstein.  Plotgram was written as a modified version of Plotree in 
  744. December of 1984.  During 1985, David Swofford and Julian Humphries 
  745. made an interactive version of Plotgram and made other substantial 
  746. modifications to the source code, including fixing a few bugs.  Some 
  747. of these modifications have been added to versions 1.3, others will be 
  748. added in the future.  Swofford and Humphries wrote some of the device 
  749. drivers listed in Appendix 1.  Also during 1985, Felsenstein produced 
  750. Dotree and Dotgram, versions that drive dot matrix printers. 
  751.  
  752.  
  753. ========================================================================= 
  754. =========================================================================
  755.  
  756. ADDENDUM by Joe Felsenstein
  757.  
  758.                GENERAL COMMENTS ON GETTING STARTED
  759.  
  760.          It's a lot easier than Chris makes it sound in the 
  761. documentation above.  First you get the programs compiled, which is 
  762. mostly the same as getting anything else in the package compiled and 
  763. running, keeping in mind mostly that these programs have three input 
  764. files (parmfile, treefile, and fontfile) and one output file 
  765. (plotfile) which will probably need a CLOSE statement so it doesn't 
  766. get lost. 
  767.  
  768.          OK, say that's done.  How do you give all the commands to run 
  769. the programs.  Gosh, it sounds awfully complicated, doesn't it?  It 
  770. isn't!  Just make up the treefile containing some tree, say: 
  771.  
  772. ((A,B),(C,D));
  773.  
  774. and a parmfile that contains just one line (trust the defaults for 
  775. now) 
  776.  
  777. PLOTTER H
  778.  
  779. (or whatever of the plotters you have: T for Tektronix, B for Bausch    
  780. and Lomb, or C for Calcomp (we still don't know if that one works)). 
  781.  
  782.      Now run it!  If it seems to have worked, try sending it to your 
  783. plotter. 
  784.  
  785.      If it has trouble reading the treefile or parmfile and gets upset 
  786. and complains about end-of-lines or end-of-files, you probably have 
  787. one line too many in your file.  These programs are rather sensitive 
  788. to that.  Try deleting the blank line after the last substantive line 
  789. in these files. (Or adding one if it wants it that way). 
  790.  
  791.      If you have got out one of these (beautiful) plots, now you are 
  792. ready to read everything more carefully and start playing around with 
  793. the parmfile and making things more complicated.  Have a look at 
  794. LABELSIZE, XSIZE, YSIZE, XPOSITION, YPOSITION, ROTATION, etc. 
  795.  
  796. I must simply add that PLOTREE and PLOTGRAM are absolutely beautiful 
  797. programs that produce marvellous results, absolutely publishable.  Try 
  798. them -- you'll like them. 
  799.  
  800. ==================================================================
  801. ==================================================================
  802.  
  803.           DOTREE and DOTGRAM   --- all you need to know.  
  804.  
  805.                         by Joe Felsenstein
  806.  
  807.                (note:  DOTREE pronounced DOT-TREE!)
  808.  
  809. These are versions of PLOTREE and PLOTGRAM that I have prepared by
  810. modifying PLOTREE and PLOTGRAM.  They work on dot matrix printers. The 
  811. printers supported at the moment are: 
  812.  
  813.     Epson printers with dot graphics, including all sorts of
  814.        printers that are Epson-compatible in their graphics,
  815.        such as Star Gemini family, Panasonic KP1091 etc.
  816.     C. Itoh Prowriter and family -- including its sibling the
  817.       NEC 8023 (and 8025), and the printers by TEC (Tokyo
  818.       Electric) who actually are the ones that produce these
  819.       printers.
  820.     Toshiba P1350, P1351, P351, P1340, P341, etc.
  821.  
  822. I meant to also include Okidata as a fourth supported family, but 
  823. couldn't locate one to try it out on in time to get the code into this 
  824. release, so for the moment this will have to wait for the next 
  825. release.  Or do it yourself! 
  826.  
  827. The programs take a few minutes to produce the graphics information in 
  828. a file, which you then copy to your printer.  I have to say that the 
  829. printing speed of the Star Gemini and C. Itoh printers I tried was 
  830. acceptable, but that the Toshiba printers, which are very fancy 24-
  831. dot-per-character printers, simply had so many little dots to dump to 
  832. the printer that at 1200 baud it took about 20 minutes for one plot. 
  833.  
  834. One caution -- some operating systems change bytes as they go out to 
  835. the printer.   You have to stop them.  Unix may give you trouble with 
  836. this.  Ask a "guru".   For MSDOS (IBM PCDOS) you will want to COPY the 
  837. file to your printer device (whatever that is) but with a /B after the 
  838. filename so that the operating system is properly intimidated and does 
  839. not mess with your file.  On CP/M-80 you can use (if your printer is 
  840. hooked to the LST: device) and the file with all the little dots in it 
  841. is called PLOTFILE : 
  842.  
  843.     PIP LST:=PLOTFILE[O]
  844.  
  845.  the [O] being the trick that intimidates the operating system.
  846.  
  847. (MVSP users note: I have modified the dot matrix procedures so that 
  848. PLOTGRAM always writes directly to the printer.  I ran into problems 
  849. when output was directed to a DOS file or device in that some data was 
  850. being lost in transit.  As a result there is no need to use the COPY 
  851. command as described above. - WLK)
  852.  
  853.                       
  854.                        FEATURES
  855.  
  856. Almost identical to PLOTREE and PLOTGRAM!  With the following 
  857. exceptions: 
  858.  
  859. (1)  No CHANGEPEN command -- because there is no pen to change!
  860.  
  861. (2)  You say PRINTER instead of PLOTTER.  This I did so you can't 
  862. mistakenly call PLOTGRAM when you mean to call DOTGRAM and not be 
  863. stopped by an error message.  The printer symbols are: 
  864.  
  865.         Epson compatible     E
  866.         C. Itoh family       C
  867.         Toshibas             T
  868.  
  869. (3)  The parameter defaults are somewhat different.  See the detailed 
  870. code of the PROCEDUREs initparms and printrparms to get the details, 
  871. if needed. 
  872.  
  873.  
  874.                         USING THE PROGRAMS
  875.  
  876.       Same as PLOTREE and PLOTGRAM, with the exceptions noted.  
  877.                         
  878.  
  879.                           HOW THEY WORK 
  880.  
  881.      Same as PLOTREE and PLOTGRAM for working out tree coordinates.  
  882. When it comes the actual printing, the program works down your page 
  883. one strip one character deep at a time.  For each strip the program 
  884. goes through the tree and figures out if any dots in that strip need 
  885. to be turned on.  When it finishes drawing in the bunch of bytes that 
  886. represent all the dots in that strip, the routine striprint prints the 
  887. strip out, and on to the next strip.  Every five strips a number (5, 
  888. 10, 15, ...) is printed out just to reassure you.  When all is 
  889. finished, the plot file needs to be dumped to your printer. 
  890.  
  891.  
  892.                             HELP!
  893.  
  894.     You can help me by letting me know graphics details of any other 
  895. printer so we can include the code or append it to this documentation. 
  896.  
  897.           
  898.                SPECIFIC INSTRUCTIONS FOR EACH PROGRAM
  899.  
  900.    There aren't any.   Read the instructions for PLOTREE and/or 
  901. PLOTGRAM, then change PLOTTER to PRINTER, provide the proper printer 
  902. code (E, C, or T) and go to it. 
  903.  
  904. ====================================================================
  905.  
  906. Copyright 1986 by Christopher A. Meacham.  Permission is granted to 
  907. copy, distribute, and modify this document provided that (1) this 
  908. copyright message is not removed and (2) no fee is charged for this 
  909. document. 
  910.  
  911.        (for version 1.4 of PLOTGRAM, distributed with MVSP 2.0)
  912.  
  913.  
  914.                SPECIFIC DOCUMENTATION FOR PLOTGRAM
  915.  
  916.                      Christopher A. Meacham
  917.             Botany Department, University of Georgia,
  918.                   Athens, Georgia 30602, U.S.A.  
  919.  
  920.              Present address:  University Herbarium, 
  921.       University of California, Berkeley, CA 94720, U.S.A.
  922.  
  923.  
  924. DESCRIPTION OF THE OUTPUT TREES
  925.  
  926.      Plotgram draws trees of three basic types:  cladograms, 
  927. phenograms, and phylograms.  For cladograms, the lines between 
  928. internodes are drawn at a slant, and the level at which a branch comes 
  929. off has no special significance.  A cladogram depicts only the order 
  930. of branching as determined by the tree description.  For phenograms 
  931. and phylograms, the lines between internodes are drawn as right 
  932. angles, and the position of each node (branch point) is determined by 
  933. the number in the tree description that is associated with that node.  
  934. For phenograms, the number is interpreted as a level, that is, the 
  935. number describes how far from the base (or, alternatively, the top) of 
  936. the diagram the branch point is to be placed.  The tips of a phenogram 
  937. are all at the same level.  A phylogram is similar to a phenogram, but 
  938. the number is interpreted as the length of the internode that is 
  939. situated below the node on the tree.  In addition, the tips of a 
  940. phylogram are not necessarily all at the same level.  For all three 
  941. diagrams the labels are placed at the tips of the ultimate branches. 
  942.      Plotgram generates these three types of diagram by performing 
  943. basic operations in different combinations.  Exactly which operations 
  944. are performed can be controlled by the user.  This can enable the user 
  945. to make types of tree diagrams other than the three main types 
  946. described above. 
  947.  
  948. USING PLOTGRAM
  949.  
  950.      The user should first read the general documentation for Plotree 
  951. and Plotgram, which describes how to get the programs running.  Only 
  952. after the program can successfully draw very simple diagrams with the 
  953. default parameter settings, should the tree form parameters that are 
  954. described below be used.  (It is permissible to set the DIAGRAMTYPE 
  955. parameter while testing Plotgram, though.)  Keep in mind that setting 
  956. these parameters is not mandatory and that Plotgram will be able to 
  957. draw diagrams successfully without setting these parameters.  The 
  958. default values, which are obtained by simply not specifying the 
  959. parameter in parmfile, will very often be completely adequate.  The 
  960. user should consult the general documentation for the format of the 
  961. parameter file. 
  962.  
  963. THE PLOTGRAM PARAMETERS
  964.  
  965. DIAGRAMTYPE - This parameter specifies which of the main diagram types 
  966. Plotgram is to draw.  Legitimate values are 'C' for cladogram, 'E' for 
  967. phenogram, and 'Y' for phylogram.  The default value for DIAGRAMTYPE 
  968. is 'C' for cladogram.  This parameter accomplishes its effect by 
  969. essentially changing the default values for the other parameters 
  970. described below. 
  971.  
  972. Default values changed by the DIAGRAMTYPE parameter 
  973.  
  974.         'C' - cladogram
  975.                  DRAWING         'S' 
  976.                  VERTICAL        'D' 
  977.                  HORIZONTAL      'S' 
  978.                  TIPS            'Y'
  979.                  WIDTHMODE       'Y'
  980.  
  981.         'E' - phenogram
  982.                  DRAWING         'R'
  983.                  VERTICAL        'V'
  984.                  HORIZONTAL      'N'
  985.                  TIPS            'Y'
  986.                  WIDTHMODE       'N'
  987.  
  988.         'Y' - phylogram
  989.                  DRAWING         'R'
  990.                  VERTICAL        'N'
  991.                  HORIZONTAL      'N'
  992.                  TIPS            'N'
  993.                  WIDTHMODE       'N'
  994.  
  995. The effect of selecting a DIAGRAMTYPE of 'Y' (phylogram) is identical 
  996. to the effect of setting the parameter values listed above under 
  997. phylogram. 
  998.  
  999. DRAWING - This parameter specifies whether the lines between nodes on 
  1000. the tree are to be drawn as slanted (diagonal) lines or as rectangular 
  1001. (right-angled) lines.  Legitimate values are 'S' for slanted and 'R' 
  1002. for rectangular. 
  1003.  
  1004.                    /                           !
  1005.                  /                             !
  1006.                /                               !
  1007.              /                        ----------
  1008.  
  1009.              slanted                  rectangular  
  1010.  
  1011. VERTICAL - This parameter specifies how the vertical positions of the 
  1012. nodes of the tree are to be calculated.  (Note:  "Vertical" here 
  1013. refers to the position of a node along the axis of the tree, that is, 
  1014. the position as measured from the level of the root of the tree.  
  1015. Phenograms and phylograms are customarily drawn with their root to the 
  1016. left and their tips to the right.  For the purpose of setting this 
  1017. parameter, imagine the phenogram or phylogram to be drawn with the 
  1018. root at the bottom and the tips at the top in the same orientation as 
  1019. a normal cladogram.)  Legitimate values are 'V' for "levels," 'N' for 
  1020. "lengths," 'T' for "top," 'B' for "bottom," and 'D' for "distance."  
  1021. The default value is 'D' for "distance."  
  1022.      If 'V' (for levels) is specified, the number that is associated 
  1023. with the node in the tree description determines the level, or 
  1024. distance above the root of the tree, at which the node is placed.  
  1025. This is the typical value for a phenogram. 
  1026.      If 'G' (for lengths) is specified, the number that is associated 
  1027. with the node in the tree description determines the length of the 
  1028. internode that is immediately below the node.  Thus, the level of a 
  1029. node is the sum of the lengths of all the internodes that are below 
  1030. the node.  This is the typical value for a phylogram. 
  1031.      If 'T' (for top) is specified, the vertical position of a node 
  1032. depends on the number of internodes that must be traversed to reach 
  1033. the furthest descendant node that has no descendants itself.  If a 
  1034. node has no descendants, it is placed at the uppermost, or zeroth, 
  1035. level.  If a node has a descendant that in turn has no descendants, it 
  1036. is placed at the first level below the uppermost level.  If a node has 
  1037. a descendant that has a descendant that has no descendants, it is 
  1038. placed at the second level below the uppermost level, etc.  If, for 
  1039. example, the furthest descendant from the root node were reached by 
  1040. crossing five internodes, the diagram would have six levels: the 
  1041. zeroth level at the top through the fifth level at the bottom.  The 
  1042. root would be at the fifth level.  The numbers associated with the 
  1043. nodes in the tree description are ignored.  This option is useful for 
  1044. describing the branching pattern of a tree without specific levels or 
  1045. lengths necessary to determine the positions of nodes.  In this 
  1046. regard, it is similar to the "bottom" option described next. 
  1047.      If 'B' (for bottom) is specified, the vertical position of a node 
  1048. depends on the number of internodes that must be traversed to reach 
  1049. the root.  The root is placed at the bottom, or zeroth, level.  The 
  1050. node (or nodes) that are the maximum distance (in terms of crossing 
  1051. internodes) from the root are at the highest level on the tree. 
  1052.      If 'D' (for distance) is specified, the vertical position of a 
  1053. node is equal to the horizontal distance between the leftmost and 
  1054. rightmost ultimate descendants of the node in question.  This is 
  1055. useful for cladograms. 
  1056.  
  1057. HORIZONTAL - This parameter specifies the manner in which the 
  1058. horizontal position of a node is determined.  (For the frame of 
  1059. reference for "horizontal" vs. "vertical," read the beginning of the 
  1060. above description of the VERTICAL parameter.)  Legitimate values are 
  1061. 'S' for "straightline," 'N' for "nearest," and 'F' for "furthest."  
  1062. The default value is 'S' for "straightline." 
  1063.      If 'S' (for straightline) is specified, the nodes are positioned 
  1064. horizontally so that they fall along straight lines in the manner 
  1065. needed for cladograms.  It is not necessary to describe this process 
  1066. here.  Consult the source code for details. 
  1067.      If 'N' (for nearest) is specified, the horizontal position of a 
  1068. node is calculated as exactly halfway between the horizontal positions 
  1069. of the leftmost and rightmost IMMEDIATE descendant nodes.  This is the 
  1070. typical value for phenograms. 
  1071.      If 'F' (for furthest) is specified, the horizontal position of a 
  1072. node is calculated as exactly halfway between the horizontal positions 
  1073. of the leftmost and rightmost ULTIMATE descendant nodes. 
  1074.  
  1075. TIPS - This parameter specifies whether the all the tip nodes of the 
  1076. tree should fall at the same level.  Legitimate values are 'Y', in 
  1077. which case, tips are adjusted, if necessary, to fall at the same 
  1078. level, and 'N', in which case, no adjustments are made.  The default 
  1079. value is 'Y'.  The adjustment is achieved by increasing the level of 
  1080. any tip nodes that fall below the highest level so that they equal the 
  1081. highest level. 
  1082.  
  1083. POPMODE - This parameter specifies whether internodes should be added 
  1084. to the tree to move labels that are on internal nodes to tip nodes.  
  1085. Legitimate values are 'Y', in which case, labels are "popped" away 
  1086. from internal nodes, and 'N', in which case, no change is made to the 
  1087. tree.  The default value is 'N'.  Essentially, 'Y' converts a tree 
  1088. that is not an n-tree to an n-tree. 
  1089.  
  1090. WIDTHMODE - This parameter specifies whether the width of the tree is 
  1091. to be determined by the parameter TWIDTH or the width of the tree is 
  1092. determined by the height and spacing of the labels on the tree (see 
  1093. LHEIGHT and SPACING below).  Legitimate parameters are 'Y', in which 
  1094. case, the width of the tree is determined by TWIDTH (see below), and 
  1095. 'N' in which case the width of the tree is determined by the height 
  1096. and spacing of labels.  The default value is 'Y' for cladograms and 
  1097. 'N' for phenograms and phylograms. 
  1098.  
  1099. TWIDTH - If WIDTHMODE is 'Y', this parameter specifies the width in 
  1100. centimeters of the tree.  Legitimate values are positive real numbers.  
  1101. If WIDTHMODE is 'Y', the labels will be equally spaced so that the 
  1102. total width of the tree is TWIDTH centimeters. 
  1103.  
  1104. THEIGHT - This parameter specifies the height in centimeters of the 
  1105. tree.  Legitimate values are positive real numbers. 
  1106.  
  1107. LHEIGHT - This parameter specifies the height in centimeters of the 
  1108. labels.  Legitimate values are positive real numbers. 
  1109.  
  1110. SPACING - If WIDTHMODE is 'N', this parameter specifies the distance 
  1111. between labels as a proportion of label height.  Legitimate values are 
  1112. positive real numbers. 
  1113.  
  1114. GAP - This parameter specifies the distance between the labeled tips 
  1115. and their corresponding labels as a proportion of label height.  
  1116. Legitimate values are positive real numbers. 
  1117.  
  1118. LROTATION - This parameter specifies the angle in degrees through 
  1119. which the labels should be rotated with respect to the tree.  
  1120. Legitimate values are real numbers.  The default value is '0.0'.  The 
  1121. default is to have the labels oriented in the direction of the main 
  1122. axis ("vertical axis" as used here). 
  1123.  
  1124. REVERSALS - Added by WLK.  PLOTGRAM originally would not allow 
  1125. negative values for the distances between two nodes.  However, 
  1126. dendrograms produced by some of the clustering strategies of MVSP may 
  1127. have reversals, in which the level of one node is higher than its 
  1128. ancestor node, rather than lower.  I have modified PLOTGRAM to allow 
  1129. for reversals so that a true representation of the tree is plotted.  
  1130. The default value is 'Y'.  Note that if there are reversals in the 
  1131. dendrogram description but this parameter is set to 'N', then the 
  1132. resulting dendrogram will be suspect.  If you use this version of 
  1133. PLOTGRAM for any other kind of diagram, such as cladograms, you should 
  1134. set this option to 'N'. 
  1135.  
  1136. BIOSPRINT - Added by WLK.  DOTGRAM originally sent data to the 
  1137. dot matrix printer in the same way it would be sent to a file, thus 
  1138. allowing you to dump the results to a file for later printing.  
  1139. However, I had problems with this method; sometimes some of the data 
  1140. would get lost on the way to the printer and garbase would be printed.  
  1141. I modified PLOT14 to write directly to the printer, using the 
  1142. computer's BIOS (Basic Input/Output System).  This was more reliable, 
  1143. but precluded printing to a file.  Setting BIOSPRINT to N reinstates 
  1144. the original method of printing to dot matrix printers and will allow 
  1145. printing to a file.
  1146.