# INDELible

## [TREE] block

These blocks are used to specify the trees used during simulation.

User Defined Trees:

- User trees can be rooted or unrooted and may contain any number of spaces, tabs or new lines.
- The tree name is used to refer to the tree in [PARTITIONS] blocks.
- The 3 user trees (named t1, t2 and t3 below) will all be read as identical.

      [TREE] t1 ((A:0.1,B:0.1):0.1,(C:0.1,D:0.1):0.1);

      [TREE] t2 ( (A:0.1, B:0.1):0.1, (C:0.1, D:0.1):0.1 );

      [TREE] t3
        (             // trees can span any number of lines
          (           // and include any amount of whitespace
            A:0.1,    // including new lines.
            B:0.1
          ):0.1 ,     // comments within the tree will be ignored.
         (C:0.1,D:0.1):0.1);

- Any tree can also be rescaled to be a certain tree length. For example the two following trees are identical.

      [TREE] T1 ((A:0.1,B:0.2):0.3,(C:0.4,D:0.5):0.6);
      [treelength] 4.2

      [TREE] T2 ((A:0.2,B:0.4):0.6,(C:0.8,D:1.0):1.2);

Random Trees:

- Random trees can also be created by INDELible. A different tree will be generated for each replicate.
- Random rooted and unrooted trees require the use of more commands:

      [TREE] tree1
      [unrooted] 10 2.4 1.1 0.2566 0.34  // ntaxa birth death sample mut

      [TREE] tree2
      [unrooted] 10 2.4 1.1 0.2566 0.34  // ntaxa birth death sample mut
      [seed] 2381242

      [TREE] tree3
      [rooted] 15 6.7 2.5 0.234 0.31     // ntaxa birth death sample mut

      [TREE] tree4
      [rooted] 15 6.7 2.5 0.234 0.31     // ntaxa birth death sample mut
      [treelength] 8

      [TREE] tree5
      [rooted] 15 6.7 2.5 0.234 0.31     // ntaxa birth death sample mut
      [treedepth] 0.4

- tree1 and tree2 will be unrooted random trees whilst tree3 and tree4 will be rooted random trees.
- Every time that INDELible is run tree2 will produce the same sequence of random trees beginning with the first replicate in any [EVOLVE] block where it is used, until the number after the [seed] command is changed. The other four (tree1, tree3, tree4 and tree5) will always produce different trees.
- Please note that the [seed] command overrules the use of [randomseed] in a [SETTINGS] block. If [seed] is not used, then [randomseed] will generate the same sequence of trees every time a control file is run.
- tree4 will produce random trees that are always rescaled to have a tree length of 8, and tree5 will produce random trees that are always rescaled to have a depth (root to tip) of 0.4, whilst the other three (tree1, tree2 and tree3) will always produce random trees with different tree lengths/depths. Tree Depth can only be set for random trees.
- The numbers that come after the [unrooted] and [rooted] commands are the same in both cases. The first number is the number of taxa (10 for tree1 and tree2, 15 for tree3 and tree4).
- The next four are the parameters used in the birth-death process to create the random trees.
- In order, from left to right, these are the birth-rate, death-rate, sampling fraction and mutation rate. Further details on these parameters can be found in this paper.

Branch Lengths:

- For a given topology INDELible can also create branch lengths.
- This is done by using the command [branchlengths]

      [TREE] EQUAL-TREE
      // No branch lengths need to be provided
      ((((A,B),(C,D)),((E,F),(G,H))),(((I,J),(K,L)),((M,N),(O,P))));

      [branchlengths] EQUAL // All branch lengths will be equal
      [treedepth] 0.1       // Root-to-longest-tip distance of 0.1

    [TREE] EQUAL-TREE2
      // If branch lengths are provided, they are ignored
      ((((A:0.2,B:0.1):0.4,(C:0.3,D:0.1):0.6):0.1,
      ((E:0.1,F:0.1):0.1,(G:0.2,H:0.1):0.1):0.3):0.1,
      (((I:0.1,J:0.6):0.1,(K:0.1,L:0.1):0.1):0.1,
      ((M:0.4,N:0.1):0.1,(O:0.6,P:0.1):0.1):0.1):0.1);

      [branchlengths] EQUAL // Again, all branch lengths will be equal
      [treedepth] 0.1       // Root-to-longest-tip distance of 0.1

    [TREE] ULTRAMETRIC-TREE
      // No branch lengths need to be provided
      ((((A,B),(C,D)),((E,F),(G,H))),(((I,J),(K,L)),((M,N),(O,P))));

      [branchlengths] ULTRAMETRIC // All branch lengths will be equal
      [treedepth] 0.1             // Root-to-longest-tip distance of 0.1

    [TREE] NON-ULTRAMETRIC-TREE
      // No branch lengths need to be provided
      ((((A,B),(C,D)),((E,F),(G,H))),(((I,J),(K,L)),((M,N),(O,P))));

      [branchlengths] NON-ULTRAMETRIC // All branch lengths will be equal
      [maxdistance] 0.2               // maximum pairwise distance of 0.2

- [treedepth] 0.1 rescales the tree to have a maximum root-to-tip distance of 0.1
- After using the [branchlengths] command you should use [treelength] or [treedepth], or [maxdistance] to rescale your tree.
- [branchlengths] EQUAL will make every branch on the tree equal to 0.1.
- [branchlengths] NON-ULTRAMETRIC gives every branch a random length between 0 and 1.
- [branchlengths] ULTRAMETRIC gives every branch a random length between 0 and 1, but will also extend the terminal branches so that the root-to-tip distance is the same for every tip.
- If the [branchlengths] command is used then the tree toplogy can be specified with or without branch lengths. It does not matter. Any branch lengths will be ignored. i.e. the trees EQUAL-TREE and EQUAL-TREE2 will be identical.
- Examples of the trees produced above can be seen here.
- All trees in the image are rescaled to have a maximum tree-depth of 0.1. This means that the root-to-tip distance for taxon G is equal to 0.1 in all 3 trees.
- N.B. For ultrametric trees [maxdistance] 0.2 is equivalent to [treedepth] 0.1. For the non-ultrametric tree they are not the same. [maxdistance] 0.2 on the non-ultrametric tree scales the tree such that the sum of the branch lengths in between (in this case) taxons G and N would be 0.2

  Trees (random or user) that are used during the simulation will be output by INDELible in a file like this.