Compatibility with paleotree

Objects produced by FossilSim contain all the information required by the paleotree format and vice-versa, thus these two packages are fully compatible.

Converting from paleotree is done using the paleotree.record.to.fossils function, which returns a list of the corresponding phylo, taxonomy and fossils objects.

record = paleotree::simFossilRecord(p = 0.1, q = 0.1, r = 0.1, nruns = 1, nTotalTaxa = c(30,40),
                                    nExtant = 0, nSamp = c(5,25))

converted_record = paleotree.record.to.fossils(record = record)
converted_record
## $tree
## 
## Phylogenetic tree with 31 tips and 30 internal nodes.
## 
## Tip labels:
##   t1, t3, t7, t11, t9, t13, ...
## Node labels:
##   32, 33, 34, 35, 36, 37, ...
## 
## Rooted; includes branch lengths.
## 
## $fossils
##    sp edge     hmin     hmax
## 1   1    1 971.9145 971.9145
## 2   1    1 973.3466 973.3466
## 3   1    1 987.4003 987.4003
## 4   1   33 989.7576 989.7576
## 5   2    2 966.6233 966.6233
## 6  28   28 949.1969 949.1969
## 7  28   60 964.0159 964.0159
## 8  28   60 970.8105 970.8105
## 9  27   27 971.4643 971.4643
## 10 27   27 971.6289 971.6289
## ...
## Fossil record with 29 occurrences representing 15 species
## Fossils record simulated from or assigned to an existing taxonomy 
## 
## $taxonomy
##    sp edge parent     start      end mode cryptic cryptic.id
## 1   1    1     NA  988.7071 971.8536    r   FALSE          1
## 2   1   33     NA  990.2402 988.7071    r   FALSE          1
## 3   1   32     NA 1000.0000 990.2402    r   FALSE          1
## 4  31   31      1  990.2402 987.1709    b   FALSE         31
## 5   2    2      1  970.5744 965.5648    b   FALSE          2
## 6   2   37      1  972.4283 970.5744    b   FALSE          2
## 7   2   36      1  973.6627 972.4283    b   FALSE          2
## 8   2   35      1  974.2120 973.6627    b   FALSE          2
## 9   2   34      1  988.7071 974.2120    b   FALSE          2
## 10 28   28      2  956.5642 941.7118    b   FALSE         28
## 11 28   61      2  960.3618 956.5642    b   FALSE         28
## 12 28   60      2  974.2120 960.3618    b   FALSE         28
## 13 27   27      2  973.6627 961.2136    b   FALSE         27
## 14 26   26      2  972.4283 968.7297    b   FALSE         26
## 15  3    3      2  962.3386 952.6071    b   FALSE          3
## 16  3   40      2  967.5172 962.3386    b   FALSE          3
## 17  3   39      2  969.0815 967.5172    b   FALSE          3
## 18  3   38      2  970.5744 969.0815    b   FALSE          3
## 19 17   17      3  940.4658 940.4620    b   FALSE         17
## 20 17   53      3  962.4451 940.4658    b   FALSE         17
## 21 17   52      3  969.0815 962.4451    b   FALSE         17
## 22  5    5      3  959.9962 959.2716    b   FALSE          5
## 23  5   41      3  967.5172 959.9962    b   FALSE          5
## 24 19   19     17  954.3532 953.3409    b   FALSE         19
## 25 19   56     17  956.8053 954.3532    b   FALSE         19
## 26 19   55     17  958.6901 956.8053    b   FALSE         19
## 27 19   54     17  962.4451 958.6901    b   FALSE         19
## 28  4    4      3  962.3386 955.0158    b   FALSE          4
## 29 30   30     28  960.3618 956.9353    b   FALSE         30
## 30  6    6      5  958.4771 954.6815    b   FALSE          6
## 31  6   42      5  959.9962 958.4771    b   FALSE          6
## 32 25   25     19  958.6901 958.4241    b   FALSE         25
## 33  7    7      6  953.7851 951.0418    b   FALSE          7
## 34  7   46      6  953.8828 953.7851    b   FALSE          7
## 35  7   45      6  957.5866 953.8828    b   FALSE          7
## 36  7   44      6  957.8415 957.5866    b   FALSE          7
## 37  7   43      6  958.4771 957.8415    b   FALSE          7
## 38 16   16      7  957.8415 949.9326    b   FALSE         16
## 39 15   15      7  957.5866 950.6253    b   FALSE         15
## 40 21   21     19  951.5603 947.1416    b   FALSE         21
## 41 21   57     19  956.8053 951.5603    b   FALSE         21
## 42 29   29     28  956.5642 956.0796    b   FALSE         29
## 43 20   20     19  954.3532 940.6825    b   FALSE         20
## 44  9    9      7  950.7111 942.7013    b   FALSE          9
## 45  9   47      7  953.8828 950.7111    b   FALSE          9
## 46  8    8      7  953.7851 946.9731    b   FALSE          8
## 47 22   22     21  948.6775 942.2671    b   FALSE         22
## 48 22   58     21  951.5603 948.6775    b   FALSE         22
## 49 10   10      9  946.9941 944.0227    b   FALSE         10
## 50 10   49      9  949.1859 946.9941    b   FALSE         10
## ...
## Taxonomy representing 31 species across 61 edges.

If the paleotree record is fully extinct, i.e contains no extant samples, the age of the record will be encoded in the field origin.time of the tree.

converted_record$tree$origin.time
## [1] 1000

Similarly, converting from the FossilSim objects to paleotree format is done using the fossils.to.paleotree.record function, which requires a fossils object and either a phylo or taxonomy object. If no taxonomy is provided, all speciation events in the tree will be assumed to be symmetric (bifurcating).

t = ape::rtree(6)
f = sim.fossils.poisson(rate = 2, tree = t)

converted_record = fossils.to.paleotree.record(fossils = f, tree = t)
converted_record
## $t8
## $t8$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   1.0000000          NA   1.3951422   0.9213295   0.0000000   1.0000000 
## 
## $t8$sampling.times
## numeric(0)
## 
## 
## $t6
## $t6$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   2.0000000   1.0000000   0.9213295   0.5870906   0.0000000   2.0000000 
## 
## $t6$sampling.times
## numeric(0)
## 
## 
## $t5
## $t5$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   3.0000000   1.0000000   0.9213295   0.4150379   0.0000000   3.0000000 
## 
## $t5$sampling.times
## numeric(0)
## 
## 
## $t9
## $t9$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##    4.000000          NA    1.395142    1.052488    0.000000    4.000000 
## 
## $t9$sampling.times
## [1] 1.169976 1.062755
## 
## 
## $t4
## $t4$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   5.0000000   4.0000000   1.0524875   0.3692032   0.0000000   5.0000000 
## 
## $t4$sampling.times
## [1] 0.9279696 0.4424305
## 
## 
## $t10
## $t10$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##    6.000000    4.000000    1.052488    1.040256    0.000000    6.000000 
## 
## $t10$sampling.times
## numeric(0)
## 
## 
## $t3
## $t3$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   7.0000000   6.0000000   1.0402556   0.4318103   0.0000000   7.0000000 
## 
## $t3$sampling.times
## [1] 0.6594577
## 
## 
## $t11
## $t11$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   8.0000000   6.0000000   1.0402556   0.6050447   0.0000000   8.0000000 
## 
## $t11$sampling.times
## [1] 0.9238745
## 
## 
## $t1
## $t1$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##   9.0000000   8.0000000   0.6050447   0.3302180   0.0000000   9.0000000 
## 
## $t1$sampling.times
## numeric(0)
## 
## 
## $t2
## $t2$taxa.data
##    taxon.id ancestor.id   orig.time    ext.time still.alive  looks.like 
##  10.0000000   8.0000000   0.6050447   0.0000000   1.0000000  10.0000000 
## 
## $t2$sampling.times
## [1] 0.4005886 0.3860503 0.0000000
## 
## 
## attr(,"class")
## [1] "fossilRecordSimulation"