Version - 3.4.5 - 08-21-22 (CRAN Release) - Minor formatting fix to avoid an HTML error in building the help file for timePaleoPhy, and a minor version bump Version - 3.4.4 - 04-21-22 (CRAN Release) - All functions that call on external Internet resources now fail gracefully if the resource is not available when examples are run, including examples in 'donttest' sections. This should address concerns raised in emails from CRAN about paleotree in April 2022. - This mainly meant changes to functions involving Paleobiology Database resources. - First paleotree update pushed to CRAN since the start of the pandemic, March 2020. Wow! - Small changes to two-way cluster analysis function to allow for longer taxon and site labels. More changes may come in future versions. Version - 3.3.26 - Fixed a bug in addTermBranchLength, caught by Phil Novack-Gottshall. This bug appears to have been introduced in 2018, and likely hasn't affected any actual research publication. - Added an addition step to the clean-phylo function in test-tree so that order is set to NULL before being reordered, to match an example from Emmanuel Paradis from R-Sig-Phylo Version - 3.3.25 - 12-12-19 (CRAN release) - Fixed all instances where class was checked as if it was assumed only to be a single value, and instead check now with inherits() instead, so to be acceptable for CRAN. - Moved several slow examples (simFossilRecord, perCapitaRates) to examples - fixes to spelling throughout, updated WORDLIST, wow so much work... Version - 3.3.23 - 11-10-19 (Not Released to CRAN) - Added option 'tipLabels' to timeSliceTree to allow users to replace the tip labels put on cropped branches (branches with multiple descendants, cropped to a single branch at the sliceTime) with concatanated lists of descendant taxa rather than arbitrarily returning the label of the earliest descendant taxon (the latter is still the default though!). - added tests for timeSliceTree - added system wait statements to makePBDBtaxonTree to avoid API calls from timing out Version - 3.3.21 - 07-18-19 (Not Released to CRAN) - Following up on example code from Brian O'Meara, I added some more warnings and checks to getTaxa functions for PBDB API to catch duplicated and missing taxa (e.g. taxa with 'empty records'). Version - 3.3.20 - 07-17-19 (Not Released to CRAN) - Fixed negative ages issue, and added even more checks to simFossilRecord and timeSliceFossilRecord. - Refined current testthat test suite and specified expectations, added skips for CRAN and travis. - Slightly modified dateTaxonTreePBDB so that it would accept trees without node labels, and added an example of using it to date a tree of equuids not originally taken from PBDB taxonomy. - At the suggestion of Tiago Quental, added a method to simFossilRecord that returns both the accepted simulation runs (those that satisfy the specified constraints), and the simulation runs that terminate without ever satisfying the specified constraints. This mode can be enabled with argument returnAllRuns = TRUE with simFossilRecord. Version - 3.3.5 - 07-07-19 (Not Released to CRAN) - Added in some extra checks to simFossilRecord (and related methods), and a new test, to catch a rare and yet-unexplained occurrence of negative taxon dates being returned by simFossilTaxa. Unfortunately, this error is very hard to reproduce. Version - 3.3.0 - 06-03-19 (CRAN Release) - Lots of style edits to doc and examples in many places. - Released to CRAN! Version - 3.2.8 - 06-02-19 (Not Released to CRAN) - Fixed bug communicated by user Armin Elsler in October 2018 in cal3TimePaleoPhy where if `dateTreatment = 'minMax'` was used, the output trees would have tips at the same absolute time, as the generating time-tree used for cal3 inference was generated using the input fixed first and last dates as if they were FAD and LAD, with the upper age constraint treated as fixed LAD and time of observation for each tip. This has the effect of making 'minMax' treatment with cal3 nearly identical to using 'firstLast'. This is now fixed by creating a new new basic-time-scaled tree using the randomly generated set of point occurrence times within each iteration under 'minMax', such that the resulting tip dates are always different. - Also fixed tests for variance in cal3 tree calculations that were not properly sorting time data before comparing it against the time-scaled tree. Version - 3.2.4 - 05-30-19 (Not Released to CRAN) - Noted that functions for processing MrBayes trees was not checking if names for NEXUS files included .nex or not - added a test for this, so that .nex would be added if it wasn't present - Anat Shafir reported that paleotree's obtainDatedPosteriorTreesMrB was inappropriately using the prior probability, not the posterior probability, for finding the Maximum A Posterior tree (and thus was presumably returning the Maximum A Priori tree). This was fixed and the help was greatly clarified. For many paleotree users tip-dating with an empty matrix, however, the log-likelihood of the character data is always zero, and thus the posterior probability in those cases was always identical to the prior probability. Regardless, point estimates of topologies are always to be less preferred than looking at samples of trees from the posterior. Version - 3.2.0 - 04-14-19 (Not Released to CRAN) -Replaced all instances of is.binary.tree with ape::is.binary.phylo -Updated all PBDB-dependent functions to use the current 2019 specifications of the v1.2 API for the PBDB -Phylopic plotting functions refined, with more user control of the resulting plot. -Numerous fixes to how making taxon trees are created. Version - 3.1.9 - 02-15-19 (Not Released to CRAN) -Updates to timePaleoPhy and cal3 documentation for dateTreatment argument, thanks to Armin Elsler for pointing out some inaccuracies in the text. -Updated some (but not all) functions related to use of PBDB data to use the proper 1.2 API, and made sure usage was properly accounted for. -Added functions for getting taxonomic data for clades, or for a specific list of taxa from the PBDB, which previously had existed in proto form in examples. -Added a function for plotting a tree with phylopics from the PBDB - this function currently does not allow for a lot of flexibility and is a work in progress. Version - 3.1.3 - 10-01-18 -Added function twoWayEcologyCluster for doing two-way R-mode & Q-mode cluster analyses of proportional abundance datasets from community ecology Version - 3.1.1 - 07-05-18 -Fixed bug with createMrBayesTipDatingNexus to avoid 'morphNexus not found error' when a pre-existing NEXUS file is used but the morphological matrix doesn't need to be entirely reconstituted. Thanks to Struan Henderson for finding this bug. Version - 3.1.0 - 07-02-18 (Released to CRAN) -CRAN release -Modified code checking for unique solutions in minCharChange on advice of Uwe Ligges, to avoid timing-out when tested on openBLAS systems Version - 3.0.2 - 06-27-18 (Not Released to CRAN) -Added new function nodeDates2branchLengths, so that node and tip ages can be used to obtain edge lengths, in absolute time, for undated trees, at suggestion of Struan Henderson -Bumped version number, merged to master branch. Version - 3.0.1 - 05-03-18 (Not Released to CRAN) -Added Pete Wagner's functions relating to measuring character exhaustation, added Pete to the authors for paleotree. -Added another cladogram (an MPT from a 13-taxon analysis) to SongZhangDicrano example dataset -Added argument verboseWarnings to cal3 functions, modified previous 'warnings' (actually used function for messages) to warnings Version - 3.0.0 - 10-20-17 -Released to CRAN after a long hiatus from new CRAN releases. Version - 2.9 - 10-20-17 -Bumped up version number, to reflect ongoing development over a long period without CRAN release. (CRAN release coming soon.) -Added function createMrBayesTipDatingNexus, which creates a full NEXUS script for doing tip-dating analyses in MrBayes. -Added function obtainDatedPosteriorTreesMrB, which will get the dated trees from the posterior of a MrBayes analysis (or provide an otherwise difficult to obtain summary tree, appropriate for dated analyses). -Added function treeContradiction, which gives the contradiction difference (CD) value between two topologies, as described in Bapst et al. in press (Syst Biol). -Added function setRootAge which will add a $root.time element to a tree, given a set of ages for tip taxa, using the age for the youngest matching taxon name, -Added function setRootAges for setting root ages for a set of many trees as a multiPhylo object, -Tried changing changelog.txt to .md, then changed it back. -So, it turns out that ACCTRAN in phangorn was never converted from Fitch algorithm to Sankoff, and thus it was inappropriate for ACCTRAN to be applied to trees with multifurcations. This now results in an error if attempted by a user. Many apologies! -Added new dataset RaiaCopesRule, containing dated paleo-phylogenies for ammonite genera, ceratopsian species, and cervid species from Raia et al. 2015, along with ammonite trait data from same publication. -Fixed error with missing ingroup constraint in createMrBayesTipDatingNexus reported by Melanie Hopkins, thanks! Version - 2.8 - 04-06-17 (Not Released to CRAN) -Added additional checks so that helpful error messages are given if species names are accidentally left in as a column in timeList for bin_cal3TimePaleoPhy and bin_timePaleoPhy, thanks Victoria Arbour for this bug report -Added informative error message if sliceTime is later in time than the lattest (most recent) tip (thanks Graeme Lloyd for reporting this) -Merged two taxa due to an accidental taxon name mis-spelling in the kanto dataset -Fixed a missing line in the example code for perCapitaRates -Added argument 'yAxisLims' to multiDiv functions so that the y axis (richness) can be constrained by the user, thanks to Robin Beck for suggestion (01-23-17) -Added examples of using simFossilRecord with randomly-sampled rate variation, thanks to Laura Soul for making me realize I'd already made this possible! (03-20-17) -Small edit to createMrBayesConstraints documentation -Added example of a two-way cluster analysis (sensu Miller 1988) to examples for kanto data, based on code provided by Max Christie (Thanks!) -Added new function: createMrBayesTipCalibrations, which creates a block of MrBayes codes for calibrating tip ages in a tip-dating analysis Version - 2.7 - 04-12-16 -Modified probAnc documetentation so that indirect descendant examples are shown -Modified probAnc so that calculated NaN values are replaced with zero and a message is printed -Added name and length checks to horizonSampRate, and code to resort names so they match if not input correctly -Modified plotTraitgram to allow input of simulated node values, edited and clarified documentation and examples -Small changes to order of arguments in bin_cal3TimePaleoPhy -Added argument maxAttempts to simFossilRecord so that simFossilRecord will end after some number of failed attempts. Default is Inf. Thanks W. Andrew Barr for this suggestion in issue #1! -Added example for bin_timePaleoPhy with minimum node ages AND random resolution of polytomies -Fixed bug pointed out by Armin Elsler of Bristol, that randomly resolving polytomies and setting minimum node ages with bin_timePaleoPhy led to an error, due to bin_timePaleoPhy resolving polytomies before sending to timePaleoPhy (which leads to errors) -Modified cal3TimePaleoPhy so that if randres=TRUE and node age minimums were used, that node age locks were applied to the correct nodes post random resolution of polytomies Version - 2.6 - 12-01-15 -Fixed an issued with fossilRecord2fossilRanges where a dataset with a single taxon resulted in a fatal error regarding an attempt to replace more elements than already exists -Fixed issue with merging cryptic taxa in fossilRecord2fossilRanges -Discovered slight stochastic element in minBranchLength where order of edges mattered, and I apparently used sample() to choose the next edge, which means I was an idiot in 2011. Thanks to Manabu Sakamoto for reporting this very difficult to notice bug. -Made several improvements to timeSliceTree thanks to modified code from Klaus Schliep, particularly replacing use of dist.nodes for root-to-tip distances with node.depth.edgelength instead (much more efficient, much faster!) -Made similar changes to all functions in modifyTerminalBranches based on Klaus Schliep's suggestions, including dropExtinct -Replaced any instance where dist.nodes was used to get root-to-node distances with node.depth.edgelength throughout paleotree, including branchClasses, cal3TimePaleoPhy, compareNodeAges, dateNodes, depthRainbow, multiDiv, phyloDiv, plotTraitgram, taxa2phylo, termTaxa, timePaleoPhy -Revised DESCRIPTION's description of paleotree -Revised README -Removed functions getSampRateCont and getSampProbDisc and all references elsewhere in paleotree: use 'durationFreq' functions instead! -Removed functions simFossilTaxa, simFossilTaxa_SRCond and simPaleoTrees and all references elsewhere in paleotree. Use simFossilRecord instead! -Changed simTermTaxaAdvanced to use simFossilRecord rather than simFossilTaxa -Modified divCurveFossilRecordSim (which powers plot functionality for simFossilRecord) so that red sampling curve isn't plotted if the only sampled taxa are extant sampled-at-the-modern taxa -Added check to freqRat in case calculated freqRat is NaN (i.e. 0 / 0 ) Version - 2.5 - 09-20-15 -Added argument APIversion to makePBDBtaxonTree which allows a user to control which version of the API is called when argument solveMissing=queryPBDB. Current default is "1.1", this will need to be updated when PBDB API 1.2 becomes public -Added some safety checks to degradeTree -Added function equation2function which converts a character string containing the right-hand side of a single-line equation (like from class formula) to an R function with arguments corresponding the parameters in the input equation. -Added handling for ambiguous and polymorphic characters to minCharChange, AncPropStateMat and resolveTreeChar by adding support for these options as they already existed in phangorn -Altered function parentChild2TaxonTree to handle datasets where root-ancestor was indicated with an NA value -Additional checking in testEdgeMat to catch when the root node is misnumbered, also additional checking taken with modification from Emmanuel Paradis's checkValidPhylo -Additional routines in cleanNewPhylo to convert $edge and $Nnode to integer storage, and in case collapse.singles fails to collapse all nodes -Modified taxa2phylo, expandTaxonTree, resolveTreeChar, taxa2cladogram to use cleanNewPhylo -Sweeping grandiose changes of how trees are created, cleaned, checked, etc with loads of tiny hidden functions. An unlikable yet necessary thing to implement. -Function taxa2phylo apparently requires that taxa be ordered by FAD, with the root ancestor being listed first (probably reflecting bad coding practices of Dave circa 2011...) -Function taxa2phylo will now silently coerce a dataset (and input obs_time) so that taxa are ordered by FAD, before continuing -Fixed small bug introduced by this, which mis-numbered ancestral taxa when passing to further parts of taxa2phylo (ugh) -Added tolerance argument to dateNodes to stop spurious warnings related to floating precision about native node dates that were barely distinguishable from zero -Added new example dataset of macroperforate foram relationships and ages taken from Aze et al. 2011 for use in testing taxa2phylo and other related functions -Added a tolerance argument to cal3timePaleoPhy to stop spurious warnings related to floating precision about terminal tip ages that were barely distinguishable from zero -Discovered broken while() loop in getUltimateAnc and testParentChild, added code to avoid infinite-running while loops -Added example dataset of character matrix and cladogram from Song and Zhang (2014) study of dicranograptid relationships -Removed variables from functions that were assigned but never used via package codetools -Following recent change in CRAN policy, now explicitly importing various functions from default non-base package into paleotree namespace, including importing package stats as a whole. These imports now listed in DESCRIPTION. -Added function bindPaleoTip which wraps phytool's bind.tip for use with non-ultrametric paleontological phylogenies with $root.time elements, allows input of the new tips age and updates $root.time -Added 'kanto' a fictional example dataset, consisting of a taxon abundances-by-sites table for community ecology -Added community ecology functions 'pairwiseSpearmanRho' and 'HurlbertPIE' since they don't seem to be in any other package -Modified how timePaleoPhy looks for node dates to assign, after taxa are dropped (originally matched clades based on tip IDs, not tip labels) -Added argument to multiDiv that allows for control of line type -Modified taxa2phylo so root.time is added before plotting -Removed erroneous, incorrect references to Hartmann et al. 2011 from simFossilTaxa; this effect is now properly accounted for by simFossilRecord -Added function createMrBayesConstraints to convert a topology to a list of topological constraint commands for MrBayes -Changed many cases where classes of objects are checked to use inherits(), not is() or class()=="", both of which are less preferred methods -Added function simFossilRecord, a large number of unexported functions and several minor exported helper functions listed under simFossilRecordMethods -simFossilRecord is a complex, elaborate piece of software for fast, precise simulation of fossil records under a birth-death-sampling process, with a wide range of models of morphological differentiation allowed, and a wide range of forms for rates to be defined as with respect to several key parameters -Current intention is to remove simFossilTaxa and related functions in next version *and* port simFossilRecord to its own package, simultaneously with the release of he *next* CRAN version of paleotree (2.6), as well as remove some other older, redundant functions. This will require considerable modification of examples in paleotree. Version - 2.4 - 05-01-15 -Modified timePaleoPhy help file to clarify 'these are not realistic time-scaling functions' statement and correcting an 'either' to 'neither' in the description of argument 'ntrees' -Modified bin_timePaleoPhy and bin_cal3TimePaleoPhy to clarify that dateTreatment=minMax should be replaced be *either* the point.occur argument *or* a sites matrix -Changed license from GPL ver 2 or higher to Creative Common zero, as I finally realized that CC0 is supported by CRAN (apparently I missed this change years ago) -Added 'clade' option to collapseNodes to collapse *all* descendant edges of a selected node -Added function testEdgeMat which is a simple checker of the $edge matrix of phylo objects for inconsistencies -Added function taxonSortPBDBocc which sorts unique taxa out of PBDB occurrence datasets -Added function occData2timeList which converts taxon-sorted occurrence data lists to the two-matrix timeList object useable by many other paleotree functions -Added example data downloads from the Paleobiology Database of occurrence data and taxonomic data, available under 'graptPBDB' -Added function makePBDBtaxonTree which takes taxon data from the PBDB and constructs a very informal taxon tree from either (a) parent-child taxon relationships pairs, by default, or (b) the Linnean taxonomic hierarchy -Added functions timeList2fourDate and fourDate2timeList which convert between the 'four-date' and 'timeList' formats for first and last appearance dates given as bounded ages (i.e. start and end times of intervals) -Added function plotOccData which will plot occurrence data, such as that output by taxonSortPBDBocc from PBDB downloads -Changed a number of \dontrun to \donttest so they will run during modified non-CRAN R CHECK tests with --run-donttest -Now allowed to have a simpler Travis CI structure, apparently with --run-donttest -REVERTED due to new r-travis not failing broken builds; Will make this change on a later date) -Added retioChar, character data for 3 characters for the 22 Retiolitinae species, to the retiolitinae example dataset -Added functions minCharChange and ancPropStateMat which are wrappers for doing parsimony ancestral reconstruction via phangorn's ancestral.pars -Added a badge to README that counts number of paleotree downloads from RStudio server -Added $sampledLogLike and $sumLogLike elements as additional output attached to time-scaled trees from cal3 functions, to allow users to quantify the relative optimality of each tree in a sample under the cal3 probability density function. -Added function resolveTreeChar, which will use parsimony ancestral reconstruction algorithms to try to resolve polytomies in a phylogeny, so as to minimize the number of independent transitions for some given discrete trait (ordered or unordered). This function ultimately relies on phangorn's ancestral.pars, via ancPropStateMat -Added function parentChild2TaxonTree which converts a two-column matrix parent-child relationships to a taxon-tree of 'phylo' format -Added function taxonTable2TaxonTree which converts a table of taxonomic hierarchy membership to a taxon-tree of 'phylo' format Version - 2.3 - 01-16-15 -New function dropPaleoTip which is a simple wrapper for drop.tip in ape but uses fixRootTime to adjust the $root.time element in the resulting tree, after tips are dropped (Thanks to a conversation with Graeme Lloyd) -Modified how fixRootTime worked so that (by default) it drew the root age based on shared taxon membership of treeNew between the clades in treeOrig, see the description of argument nodeAgeTransfer for complete details. The original method, based on modifying the root-time based on changes in tree-depth (which is less robust to changes in taxon membership) can be executed by setting the argument nodeAgeTransfer to FALSE. -Modified dateNodes so that tip labels given to label node dates when the argument labelDates is TRUE are sorted alphabetically -Added a function minBranchLength which mirrors the 'mbl' time-scaling approach, in taking a tree that already has edge lengths and adjusting branches so all are above some given minimum branch length. timePaleoPhy was modified to use this function rather than doing this algorithm internally. -Added checks for duplicate taxa in input time or tree data for time-scaling functions (Thanks Tim Astrop for pointing this out!) -Fixed bug in timeSliceTree where an error was produced if plot=FALSE was given (Thanks to Min Wang, Tyler Smith and Manabu Sakamoto!) Version - 2.2 - 09-18-14 -Added a new time-scaling method to timePaleoPhy, "equal2" which is otherwise identical to "equal" but replicates the old branch-ordering routine used for 'equal' prior to version 2.0 -Fixed bug in simPaleoTrees when ranges.only=FALSE, modified examples to catch error in the future -Altered several parts of the timePaleoPhy help file to clarify use of timePaleoPhy (not bin_timePaleoPhy) when there is stratigraphic age uncertainty for taxa, including dropping a harshly worded Note. (Thanks Gene Hunt for pointing out some contradictions in the text!) -Altered diversity curve functions (including multiDiv) to plot *exactly* to given timelims arguments using xaxs="i" argument in plot -Slight modification to how plotting works in diversity curve functions (including multiDiv) to decrease interval boundary line overlap from 100th to 10000th of the total plotted area. -Added axisPhylo() to more functions that have secondary plotting in anticipation of ape referring to $root.time when calculating axis labels. (crosses fingers, thanks E. Paradis!) -Added a new example dataset, 'graptDisparity' which is the temporal ranges and character data from 183 Ordovician-Silurian graptoloid species taken from Bapst et al. (2012, PNAS), including a dissimilarity matrix calculated from the aforementioned character data. -Added a new function 'nearestNeighborDist' which calculated nearest neighbor distance for each unit in a pair-wise distance matrix. This function is added mainly for a minor pedagogical purpose, as NND is easily calculated without a specialized function. Version - 2.1 - 08-15-14 -Changes to bin_timePaleoPhy and bin_cal3TimePaleoPhy so taxa not included in the tree are dropped before random dates are drawn from those intervals, which increases computational efficiency. -New function perfectCharTree, for obtaining matrices of simulated parsimony informative characters on a topology -New function seqTimeList, which randomly searches a given timeList object with overlapping intervals for solutions which have fully sequential intervals -Added error message to timePaleoPhy to report an error if 'type' argument is not one of the listed options -Fixed error in sampleRanges when handed data with a single instantaneous taxon -Added option to return all sampling events in $ranges for simPaleoTrees -Modified bin_timePaleoPhy and bin_cal3TimePaleoPhy so that the $ranges.used arguments name the columns "FAD" and "LAD" respectively for ease of use with geoscalePhylo in package strap -Small modifications to how plotting worked in freqRat, changed calculations to work on proportions and not absolute frequencies, made it so that a warning is issued if a freqRat over 1 is calculated. -Clarifications to help file and warning statements regarding use of 'zlba' and 'aba' time-scaling methods (thanks Graeme Lloyd!) -Added calcExtinction argument to freqRat to give capability to get extinction rate from slope of log frequencies Version - 2.0 - 02-03-14 -Changed parInit to use uniform distribution to randomly draw initial parameter values between bounds, rather than take mid value between bounds -Changed how time-scaling functions dealt with node.mins argument; can no longer use node.mins with a dataset that has unshared taxa that are to be dropped -Altered example for use of node.mins in help files for time-scaling functions; thanks John Clarke of Oxford for the heads up! Also other modifications were made to the help descriptions, clarifying that node.mins can be used to constrain the minimum age for the root node. -Also on a different issue brought to my attention by John Clarke, added an error message to paleotree when 'equal' is attempted by the edges leading to the root are zero-length (because 'equal' cannot run under this situation!) -Added new function collapseNodes that collapses specific user-defined nodes, either forward or backward -Made all lines checking for dichotomous trees check both with is.binary.tree() *and* is.rooted() -Added new function dateNodes which returns the dates of the internal and tip nodes of a phylogeny on an absolute time-scale, with respect to the $root.time element if one exists -On a trial basis, I have added new function inverseSurv which attempts to replicate the forward and inverse survivorship modeling applied by Foote (2001, 2003, 2005) and is useable with the newly implemented constrainParPaleo framework implemented in the previous version of paleotree. I am not yet convinced this function is a 100% faithful replicate of the original method. -fixed error in plotTraitgram where if trait data was entered in same order as tree$tip.label, trait data was not resorted prior to running ace -'equal' method in timePaleoPhy wasn't returning same result as 'equal' method in DatePhylo from Graeme Lloyd's original code. This turned out to be a result of differences in how we ordered nodes: Graeme ordered them by time or distance-from-the-root (using dist.nodes) and I was using node.depth, which counts number of branching events. This choice shouldn't make a considerable difference on the performance of the algorithm, but does produce some differences in the resulting time-scaled trees. For consistency, I have change timePaleoPhy to match Graeme's algorithm. -altered timePaleoPhy and cal3timePaleoPhy to allow the point date occurrences with the first and second column of timeData interpreted as bounds instead, using the argument dateTreatment="minMax" -related to above change, the argument rand.obs was removed from timePaleoPhy and cal3TimePaleoPhy as no longer necessary, this functionality is now available via dateTreatment="randObs" -Although it may be strange to not report a lack of a change, but still have not added the finite time window approach for durationFreq Version - 1.9 - 01-02-14 -Changed all functions to individual R script files rather than single master script. Why didn't I do this years ago??! -All help files converted to an roxygen2 format within function scripts -At suggestion of Fabricio Villalobos, added option to expandTaxonTree that allows branch lengths to be retained and the added lower-taxa are connected with zero-length branches. Only useful for very specific purposes, please use with caution. -Changed all lines which checked for class "phylo" of input objects to use is(obj,"phylo") instead of class(obj)=="phylo" per recommendation of Carl Boettiger -Added new warning line to taxicDivDisc so people who try to pass it matrices with character strings in the matrix will get more helpful warning messages -Upgraded probAnc and qSProb2comp based on equations in Foote (1996) for all three modes of origination, also fixed some errors in previous versions -Added new function pqr2Ps which uses Emily King's exact derivation for the joint probability of a clade being (a) going extinct but sampled on an infinite time scale and (b) never going extinct on an infinite time scale -Removed internal Ps function from cal3, now pqr2Ps which is exported directly to namespace -Converted to new way to handle likelihood functions in paleotree, moving to a function-as-an-object system like diversitree. -Following on last point, added new functions for fitting models of duration frequency data, replacing getSampProbDisc and getSampRateCont -More models to follow in future versions of paleotree: added new function footeValues which will (eventually) support a release of a function that implements Foote's (2001, 2003, 2005) inverse survivorship models -Modified diversitree's 'constrain' function to make a paleotree version named constrainParPaleo which is both entirely separate and fulfills needs such as constraining many similarly named parameters to a single value -See new functions listed in ?modelMethods for manipulating functions in the new model format -Added some not-exported hidden functions for use by the various model-handling functions -Added a 'terrible idea' function optimPaleo which simplifies using optim with new parameter bounds functions. This function is entirely for pedagogical reasons and may be removed later. -Added new function horizonSampRate which uses ML estimator from Solow and Smith (1997) for estimating sampling rate from precise durations in continuous time and number of sampled horizons -Added new function perCapitaRates which estimates the per-capita origination and extinction rates from discrete interval data, following the methods from Foote (2000) Version 1.8.2 - 09-03-13 -Added sample retiolitid graptolite dataset, try data(retiolinae) -Small fix to time-scaling functions to avoid bug associated with geiger 1.99 -Added minor option to simFossilTaxa to change taxon sorting -Added slight change to warning message for taxa2phylo in case data that looks like times of observeration from merged cryptic taxa is passed to it -Slight change to simPaleoTrees so that cryptic taxa are never merged when sampleRanges is applied (since that breaks taxa2phylo) -Following error reports from users using old versions of R, have now restricted this paleotree update to require R 3.0.0 Version 1.8.1 - 04-03-13 -Removed dependency on geiger by changing plotTraitgram to only use ace in ape Version 1.8 - 02-22-13 -simTermTaxaAdvanced had a bug which scrambled taxon names; this is fixed -Small changes to error checking in trueTermTaxaTree to stop erroneous error messages in environments with excessive numeric precision -added new argument 'int.times' to multiDiv to allow prior intervals to be added (note this change previosuly accidentally left out of v1.8 changelog) -added new argument 'inc.term.adj' to timePaleoPhy at the suggestion of Shan Huang which allows terminal ranges to be included for adjusting branch lengths under the various non-'basic' timescaling method options Version 1.7 - 12-30-12 -added new argument 'point.occur' bin_timePaleoPhy and bin_cal3TimePaleoPhy to allow for datasets composed on point-occurance/single-find taxa (i.e. FAD is equal to LAD for all taxa), following a conversation with G. Hunt -Altered sampleRanges so that taxa with last occurance at time=0 were treated as 'live' even if input was only a two-column matrix of ranges and not a 'simFossilTaxa' matrix result -Added a new 'advanced' version of the terminal-taxa / candle simulator, which uses simFossilTaxa to allow for trees with extant taxa -At the dogged insistence of my illustrious committee, I have changed the name of the 'candle' model to the 'terminal-taxon' model -altered multiDiv, phyloDiv and taxicDivDisc so to deal with extant datasets better with new arguments and changes to interval splitting -add minExtant and mintime options to simFossilTaxa_SRcond to more closely match simFossilTaxa -Nodetimes slightly rounded (to six figures) in compareNodeAges, dropExtinct, dropExtant to avoid error relating to negative relative node ages -altered binTimeData to place extant taxa in an interval bounded 0,0 for their last occurrence -altered getSampProbDisc and getSampRateCont to drop all extant taxa (for getSampProbDisc, this is defined as being in a bin defined (0,0); see above for binTimeData) Version 1.6 - 11-05-12 -Changes to bin time-scaling functions so that rand.obs and FAD.only conditions were forwarded to their associated functions, rather than done by the bin wrapper function (this caused problems with the calculation of the weight adjustment for the cal3 methods) -New function fixRootTime which is called by any other function which needs to fix $root.time elements after dropping taxa, etc. -Uses solution for fixing root.times previous being used by dropZLB -Inconsistency found in how root.time elements were fixed in terminal-branch dropping functions; dropExtant was found to be buggy -New simulation functions for 'candle trees' which are clades were all observable taxa are monophyletic lineages which correspond to the terminal branches of a phylogeny -Changes to taxa2phylo so that an error is returned if observation times outside the original taxon ranges are passed to it -SRC method is now considered deprecated and is removed from the public release of paleotree, along with any references in the help files. The SRC method, as of 10/29/12, can be found in the paleotree github repo in the deprecated functions folder. THE AUTHOR OF THIS PACKAGE STRONGLY RECOMMENDS NOT TO USE THE SRC METHOD. Users interested in using rate calibrated timescaling should use cal3 instead. -cal3 is now modified so that step.size can be changed as an argument -cal3 is modified so that differences between time of observation and LAD do not cause differences in the extent to which nodes are dated, by adding the densities calculated for 'unconsidered' potential node ages to the maximum potential node agenot alter the placement of node ages, which can be modified with -Bug fixed whereby cal3 was unable to properly use the rand.obs argument, giving out trees with time of obs at the LADs instead (perhaps the package author may have been drunk or just feeling reckless when he wrote the rand.obs arguments in the various timescaling functions?) -Bug fixed in simFossilTaxa where some sets of conditions would sometimes produce an error in some runs (thanks Tiego Quental for the bug report!) -Bug fixed in using rand.obs argument in timePaleoPhy where timeData was recycled over many runs (thanks Roger Benson for the bug report!) -Modified cal3 timescaling methods to have a randres option and to allow per-taxon anc.wt values -Modified plotMultiDiv to allow plotting multiple diversity curves, by default as a crazy rainbow version 1.5 - 10/05/12 -New functions, cal3TimePaleoPhy and bin_cal3TimePaleoPhy, similar to SRC methods but different probability equations used, req div rates -Modifications to SRC methods to work more like how cal3 calculates unobs evol history at each node -Added function freqRat for estimating the per-interval sampling probability via the frequency ratio method of Foote and Raup (1996) -Added function rootSplit, which finds most basal split among a set of taxa -Added function timeLadderTree, which resolves polytomies according to order of appearance -Added function reverseList, which takes a hierarchial list and reverses that hierarchial order -fixed bug in binTimeData where extant taxa were returned as NA in the output timeList object -Modified function compareNodeAges to allow multiple trees as input, for all nodes shared in common among all input trees -Modification to diversity curve functions so plots are cut off before going past the Modern (time 0) -Modification to avgtaxa equation used in simFossilTaxa_SRcond. See help file for details. -Warning/Error Line added to timePaleoPhy in case phylogeny tips are not a character vector like they should be version 1.4 - 06/17/12 -Added a CITATION file, accessible via citation("paleotree") -Added randLiveHat option to sampleRanges which controls how the 'hats' of taxa still alive at the modern day are treated -modified how timeData and timeList input were handled in various functions so that data.frames were converted to matrices -Added count.cryptic argument to simFossilTaxa and simFossilTaxa_SRCond -Fixed error where simFossilTaxa_SRCond treated anag.rate as prop.bifurc (and vice versa) -Cleaning up of help files: fixing typos, weird line breaks, clarification version 1.3 - 04/17/12 -The various 'bin' time-scaling functions for phylogenies now include a non-stochastic option, for prettier plotting. -Added new features to sampleRanges for variation in sampling rate similar to Liow et al. 2010 -New feature added to binTimeData to allow for pre-made intervals to be used -Changed the naming of output from diversity curve functions, simFossilTaxa and sampling rate estimating functions -Added split.int and timelims arguments to diversity curve functions to stop 'spiky' diversity curve syndrome -Changed all 'T's and 'F's to TRUE and FALSE statements in code -Changes made to simFossilTaxa for cryptic cladogenesis, requiring change in output and several other functions -Changes made to simFossilTaxa for pure-birth simulations -Changes made to simFossilTaxa_SRcond to fix simulations to right number of nExtant with bifurcation/anagenesis -The sampling rate/probability estimation functions now print warning messages if convergence does not occur -Added some additional warning messages to functions -New function for simulating speciational/cladogenetic patterns of trait evolution under a Brownian model -New functions for analyzing differences in time-scaling between two phylo objects -General cleanup of typos and clarification in manual files version 1.2 - 02/22/12 -changes made to "bin_" time-scaling functions to improve computational speed -changes made to some help files to add clarification, some examples added version 1.1 - 02/13/12 -changes made to conditioning structure in simFossilTaxa -changes also to simFossilTaxa_SRCond and simPaleoTrees as a result of this -additional clarification of help files -changed all calls of print() in the functions to message() version 1.0 - 01/27/12 -first release