20/02/18 -*- Version 2.4.0 -*-

10/12/17 -*- Version 2.3.2 -*-

10/05/17 -*- Version 2.3.0 -*-

23/09/16 Laurent Gueguen
* KCM model

26/04/16 Julien Dutheil
* Moved to C++11

07/04/16 Julien Dutheil
* Fixed bug in EB calculation for states at leaf nodes.

03/03/15 Julien Dutheil
* Added KrKcSubstitutionRegister for proteins.
* Refactoring of SubstitutionModel hierarchy.

10/11/14 Julien Dutheil
* Fixed bug #92: RE08+codon works again.

09/10/14 Julien Dutheil
* Fixed bug #90: setRootNode now reset father node pointer.

02/10/14 Julien Dutheil
* Added progress bar in tree parsing (for large trees).

28/09/14 -*- Version 2.2.0 -*-

26/09/14 Julien Dutheil
* Likelihood classes now use the ModelState class to like alphabet and model states.

17/09/14 Julien Dutheil
* Bugs #55 and #89 fixed.

28/08/14 Julien Dutheil
* Improved derivatives in DRTreeLikelihood classes.

25/07/13 Julien Dutheil
* Added method in TreeTemplateTools to unresolve all nodes below a certain confidence threshold.
* TreeTools::midpointRooting is deprecated in favour of TreeTemplateTools::midRoot.

07/03/13 -*- Version 2.1.0 -*-

06/03/13 Nicolas Rochette
* Bug #71 fixed.

24/01/13 Julien Dutheil
* Bug fixed in NHX parser: node ids are now properly set.

20/01/13 Julien Dutheil
* bpp-phyl now compiles with -Wconversion.

13/01/13 Julien Dutheil
* Added new COaLA protein substitution model.

18/11/12 Julien Dutheil
* New RateDistribution classes.
* Better BppO parser and PhylogeneticsApplicationTools.

26/08/12 Julien Dutheil
* Bug #57 fixed in distance methods
  
13/06/12 Julien Dutheil
* Added new class StateMap, and enable support for gaps in parsimony calculation.

09/02/12 -*- Version 2.0.3 -*-

08/02/12 L. Guéguen
* PseudoNewtonOptimizer accepts to stop after too many trials

08/02/12 Julien Dutheil
* Newick parsing improved!

19/01/12 L. Guéguen
* Complex eigenvalues are taken into account

16/01/12 Julien Dutheil
* Bug #43 solved.
* Bug #41 solved.

16/12/11 L. Guéguen
* Addition of neigbour-dependent models

23/09/11 L. Guéguen
* New hierarchy in codon models

26/07/11 L. Guéguen
* Mgmt of constraints (paths) between submodels in non-homogeneous trees with mixed models

19/07/11 L. Guéguen
* Biblio models

16/06/11 Julien Dutheil
* Bug #40 solved.
* Bug #16 solved (with a small change in interface).

09/06/11 -*- Version 2.0.2 -*-

09/06/11 Julien Dutheil
* Removed COA model, which was buggy (and not used). A fixed version will be added once it is published.

08/04/11 Julien Dutheil (after suggestion from Mathieu Groussin)
* Added backup system in optimization of likelihood function.

19/03/11 Julien Dutheil
* Added uniformization method for analytical substitution mapping.

18/03/11 Julien Dutheil
* Added the decomposition method in order to perform analytical substitution mapping (cf work by Asger Hobolth and co-workers).

28/02/11 -*- Version 2.0.1 -*-

25/02/11 Julien Dutheil
* Improve drawing algorithms.

18/02/11 Julien Dutheil
* Fixed bug #27

07/02/11 -*- Version 2.0.0 -*-

07/02/11 Julien Dutheil
* Proposed a fix for bug #25. SubstitutionModelSet now inherits from
  ParameterAliasable.

02/12/10 Julien Dutheil
* Improved SubstitutionCount class to allow multiple counts.
* Added simple GC<->AT substitution count.

15/11/10 Julien Dutheil
* Added topology comparison tools.
* New unit testing framework.

18/05/10 Julien Dutheil
* new TreeDrawing framework, fully event-driven.

24/03/10 -*- Version 1.9.0 -*-

11/03/10 Julien Dutheil
* Nexus format now allows lower case keywords ([biopp-devel-forum:287])
* GY94 and MG94 now have frequency option like YN98.

10/03/10 Julien Dutheil
* Added stationarity option in non-homogeneous models.

09/03/10 Julien Dutheil
* Added reparametrization option in optimization methods.

26/02/10 Nicolas Rochette and Julien Dutheil
* More efficient TreeTemplateTools::getDistanceMatrix.

08/12/10 Julien Dutheil
* Now compiles with -Weffc++!
* A lot of code updates and small bugs fixed!
* BioNJ is now faster when using the full constructor.
* Parsimony and Likelihood data structure improved.
* Nucleotide and ProteinSubstitutionModels are now full interfaces.
* No more ProteinSubstitutionModelWithFrequencies... corresponding models take
as input an optional FrequenciesSet object.

29/12/09 Julien Dutheil
* Improved TreeDrawing classes: added Listeners.

26/12/09 Julien Dutheil
* Removed all "using namespace std" in header files.
* Code cleaning.

15/12/09 Laurent Guegen
* Added classes for mixed models.

08/12/09 Julien Dutheil
* First draft of new TreeLikelihood model iterators
* Updated TreeLikelihood interfaces
* New interface SitePartitionTreeLikelihood interface, allowing different
  sites to have a distinct substitution model.

24/11/09 Julien Dutheil
* Cleaned substitution mapping classes, and added a new one.

31/10/09 Julien Dutheil
* Code cleaning in FrequenciesSet.

19/10/09 Julien Dutheil
* Bug fixed in node setFather method + new check and warning messages in tree
  edition methods.

21/08/09 Julien Dutheil
* Added config files for CMake.

12/08/09 Bastien Boussau & Julien Dutheil
* Function getValue in likelihood classes now does not repeat calculations
  if called several times on the same parameters.

09/08/09 Julien Dutheil
* Added PhyloStatistics class for computing several quantities on a tree
  in an efficient manner.

08/08/09 Bastien Boussau
* Added support for reading trees with id in TreeTemplateTools.

07/08/09 Sophie Abby & Julien Dutheil
* [biopp-help-forum:214] Bug fixed in cloneSubtree, remove the link toward the
father node of the root node of the subtree.

05/08/09 Julien Dutheil
* TreeDrawing classes improved.

22/07/09 Julien Dutheil
* Added TreeDrawing classes.

29/06/09 Julien Dutheil
* Upgraded TreeLikelihood interfaces and SubstitutionModel interface + code lifting.
* New class TreeLikelihoodTools
* Added computation of expected ancestral frequencies.
* Added computation of ancestral frequencies using an empirical bayesian
  approach.

27/06/09 Céline Scornavacca & Julien Dutheil
* Newick and Nexus tree output now use polymorphism in order to print
TreeTemplate objects more efficiently.

24/06/09 Julien Dutheil
* Change precision output while printing parameters.

24/06/09 Laurent Guéguen
* Added codon and general word models.

23/06/09 Julien Dutheil
* Compatibility update: now containers returns references instead of pointers.
* TreeTemplate now uses pointers and not references.
* Added dropTip function in TreeTemplateTools.

10/06/09 -*- Version 1.8.0 -*-

05/06/09 Julien Dutheil
* Bug fixed in Newick parser!

28/05/09 Julien Dutheil
* A hell of bugs fixed!
* Better support for the new model syntax in PhylogeneticsApplicationTools
* Support for the Nexus tree format (single tree, read only for now).

15/05/09 Julien Dutheil
* New syntax for model specification in PhylogeneticApplicationTools.

07/03/09 Julien Dutheil
* Added pseudo counts in substitution models, when setting equilibrium
frequencies [biopp-help-forum:139]
* Changed SubstitutionModel interface in order to return references instead of
  hard copy of matrices.
* Models updated to use the new functions in MatrixTools.

29/03/09 Julien Dutheil
* MarkovModulatedSubstitutionModel inherits from AbstractParametrizable.
* Several changes to support the new parameter aliasing function,
	including in PhylogeneticApplicationTools.

28/03/09 [biopp-devel-forum:19]
* Now empirical substitution models can be properly loaded with non-homogeneous models.

17/03/09 [biopp-devel-forum:11]
* Bug fixed in PhylogeneticApplicationTools::optimizeParameters.
* Also fixed error in documentation of JC models.

19/02/09 [biopp-devel-forum:6]
* Method clone in abstract[Reversible]SubstitutionModel.

02/02/09 Julien Dutheil (tnx to Emmanuel Douzery!)
* Bug fixed in TreeTools::treeToParenthesis: no more seg fault if tree is
  empty.
* Progress bar in computeBootstrapValues.	

20/01/09 Julien Dutheil
* Added getBootstrapValue method in Node.
* New PropertyNotFoundException and property methods update.

05/01/09 Julien Dutheil
* Added Rivas and Eddy substitution model with gaps.
* Small bug fixed in Markov-modulated substitution models.

18/01/08 -*- Version 1.7.0 -*-

11/12/08 Julien Dutheil
* Bug fixed in BioNJ.

10/12/08 Celine Scornavacca & Julien Dutheil
* Bug fixed int Node::getName and NodeException: no more recursive call!

07/12/08 Julien Dutheil
* New getRootFrequenciesSet in SubstitutionModelSet.
* New getStatesFrequenciesSet in MarkovModulatedFrequenciesSet.

04/12/08 Julien Dutheil
* Added a bit more options in tree length computation.

17/11/08 Julien Dutheil
* DistanceEstimation now allows to change the precision in the branch length
  estimation (no longer fixed to 0.0001, although it is still the default
	value).

10/11/08 Julien Dutheil
* Bug fixed in HomogeneousSequenceSimulator, ancestral root frequencies are
  not necessarily equal now!

04/11/08 Julien Dutheil
* New Strand-Symmetric subtituion mode from Lobry 1995.
* Numerical issue solved in GTR.

20/10/08 Bastien Boussau
* Bug fixed in PhylogeneticApplicationTools: now can run protein with covarion
models.

10/10/08 Julien Dutheil
* Bug fixed in FrequenciesSet when testing sum for frequencies.

18/01/08 -*- Version 1.6.0 -*-

12/09/08 Julien Dutheil
* Ancestral sequence reconstruction debugged and now allow sampling from the
  posterior distribution.
* PhylogeneticApplicationTools updated: observed frequencies are now set up
  in the 'initial values' methods.

11/09/08 Julien Dutheil
* Large update on TreeLikelihoodData and TreeParsimonyData to rely mostly on
  nodes id instead of Node*. Likelihood, parsimony and substitution mapping
	methods have been updated accordingly.
* Ancestral state reconstruction method has a new method to get a
  SequenceContainer with all sequences.

10/09/08 Sophie Abby
* Corrected memory leak in BipartitionList (delete -> delete[]).

02/09/08 Julien Dutheil
* Added "real" +F protein substitution models, with frequencies estimation.

18/01/08 -*- Version 1.5.1 -*-

01/06/08 Julien Dutheil
* Bug fixed in FrequenciesSet: the sum critierion was changed to be less
restrictive! (now 1e-6).

22/05/08 Julien Dutheil
* Added method getLikelihoodData() in R(Non)HomogeneousTreeLikelihood.

06/05/08 Bastien Boussau & Simon Carrignon
* Bug fixed in TreeTools::getLastCommonAncestor.

04/04/08 Julien Dutheil
* Bug fixed in copy constructors: now NH models work with covarions.

27/03/08 Nicolas Galtier & Julien Dutheil
* Bug solved in NNIHomogeneousTreeLikelihood: branch lengths are now correctly
  actualized after a NNI movement. This bug was introduced with version 1.5.
	It mainly caused an exception to be thrown inapropriately.

20/03/08 Julien Dutheil
* Kappa parameter can no longer be 0 (avoid likelihood to be 0 in some cases)
* Newton-Raphson algorithm fixed: deals with case when f'' is equal to zero.
* Reading parameters from file (PhylogeneticApplicationTools) now deals with
  parameter constraints.
* Recopy of Abstract(Non)HomogeneousTreeLikelihood fixed.
* New methods in SubstitutionModelSet.

18/02/08 Céline Scornavacca & Julien Dutheil
* Bug fixed in TreeTemplate::newOutGroup.

21/01/08 Julien Dutheil
* New function TreeTools::checkIds, used in likelihood classes (included in
		version 1.5).
* Important bug fixed in RTreeLikelihood: derivatives are correct when nodes
  id are not reset.
* Important bug fixed in substitution mapping.
* Bug fixed in substitution models with frequency parameters (init from data) !

18/01/08 -*- Version 1.5.0 -*-

18/01/08 Julien Dutheil 
* DistanceEstimation and SitePatterns classes are now Clonable.

18/01/08 Celine Scornavacca & Julien Dutheil 
* New function getNode(name) in TreeTemplate
* New function searNodeWithName dans TreeTemplateTools
* Improved multitree support in Newick

13/01/08 Julien Dutheil
* DRASRTreeLikelihoodData class improved by using the SitePatterns class.

11/01/08 Julien Dutheil
* Inclusion in new namespace bpp.
* Bug fixed in DRNonHomogeneousTreeLikelihood.
* Fixed recently introduced bug in DRHomogeneousTreeLikelihood.

29/12/07 Julien Dutheil
* New class DRNonHomogeneousTreeLikelihood.
* Methods getLogLikelihood now sort terms before adding them.

24/12/07 Julien Dutheil
* Added support for invariants in rate distributions.

18/12/07 Céline Scornavacca & Julien Dutheil
* TreeTemplateTools::parenthesisToTree now sends exceptions in case of bad
format.
* Removed a 'unused variable' warning in NonHomogeneousSequenceSimulator.

21/11/07 Julien Dutheil
* Tree(Template)Tools do not throw exception if the root node do not have a
  branch length.

15/11/07 Julien Dutheil
* Bug fixed in clonage of empty DR*LikelihoodData.

14/11/07 Julien Dutheil
* New methods getAncestors and getLastCommonAncestor in TreeTools.

07/11/07 Julien Dutheil
* Nucleotide substitution models re-parametrized to remove constraint on
  equilibrium frequencies. These frequencies can now be fully optimized.
	Root frequencies in non-stationary models also updated.
* More bugs fixed due to the new heterogeneous models.
* Sequence simulations improved (faster), due to the use of NodeTemplates
  instead of maps for storing node-specific data.
* HomogeneousSequenceSimulator moved to HomogeneousSequenceSimulator.h.

10/10/07 Bastien Boussau & Julien Dutheil
* New class NonHomogeneousTreeLikelihood, which deal with non-homogeneous
  models of sequence evolution (fixed topology).
* SubstitutionModels parameters are now cloned propoerly (no more Constraint issue).
* ClockTreeLikelihood has been chaged to HomogeneousClockLikelihood, and a
  NonHomogeneousClockTreeLikelihood was created. The ClockTreeLikelihood is
	now a common (empty) interface for both, which a specialisation of
	TreeLikelihood.
* NewtonBrentMetaOptimizer becomes MetaOptimizer, is more general, and was
  moved to NumCalc.

05/10/07 Julien Dutheil
* New PhylogeneticApplicationTools (more general) method to instanciate substitution models.
* New method PhylogeneticsApplicationTools::getSubstitutionModelSet.

28/09/07 Julien Dutheil
* New verbose option in distance methods.

21/09/07 Julien Dutheil
* OptimizationTools::buildDistanceTree improved: iterative algorithm stops
  when topological distance equals 0 instead of checking likelihoods.
* PhylogeneticsApplicationTools now supports several NNI algorithms.
* Bug fixed in SubstitutionModels! Frequencies parameters are now updated
  correctly!
* Analytical substitution models now save more calculations and declarations.
* New midpoint rooting method in TreeTools.

19/09/07 Bastien Boussau & Julien Dutheil
* New NonHomogeneousSequenceSimulator class, which replaces
  HomogeneousSequenceSimulator. An alias for backward compatibility is provided.
* Updated class names for sequence simulations, to deal with the
  non-homogeneous case: HomogeneousSiteSimulationResult=>RASSiteSimulationResult.

17/09/07 Julien Dutheil
* New interface ReversibleSubstitutionModel.
* New class AbstractReversibleSubstitutionModel.
* Bug fixed in SubstitutionModelSet (root frequencies are now properly set for
  the homogeneous case)

26/08/07 Julien Dutheil
* Class SubstitutionMapping is now Clonable.
	
24/08/07 Bastien Boussau & Julien Dutheil
* New class SubstitutionModelSet (early draft)

17/01/07 Julien Dutheil
* Bug fixed in PseudoNewtonOptimizer! (included in version 1.4.0).

06/07/07 -*- Version 1.4.0 -*-

27/06/07 Nicolas Galtier & Julien Dutheil
* No more memory leak when optimizing tree topology using NNI and PhyML algorithm.
* NNI Topology optimization method (OptimizationTools) improved and duplicated
  (optimizeTreeTopology1 & 2).
* Optimization with a molecular clock do not perform a Powell optimization as
  a last step.

12/05/07 Julien Dutheil
* DistanceMatrix class is now in library seqlib.

05/05/07 Julien Dutheil
* Add support for multi-trees I/O.

02/06/07 Julien Dutheil
* Node/Branch properties are passed as references.
* Bootstrap values computation in TreeTools.
* New constructor in PGMA to chose between U/W PGMA.
* New MRP super-tree function.

29/05/07 Julien Dutheil
* Optimization improved, with new options.

07/05/07 Julien Dutheil
* New method 'buildDistanceTree' in OptimizationTools, with iterative
  estimation procedure of Ninio et al 2007.

13/04/07 Julien Dutheil
* New parametrization in ClockTreeLikelihood.
* Optimizers improved.
* TreeLikelihood interface a little bit modified for compatibility with NumCalc.

07/04/07 Benoît Nabholz and Julien Dutheil
* New ClockTreeLikelihood class.
* New NNIHomogeneousTreeLikelihood class, splitted appart from DRHomogeneousTreeLikelihood.
* DRHomogeneousTreeLikelihood a little bit improved (derivatives computation).
* New method initialize() in TreeLikelihood classes.

03/04/07 Julien Dutheil
* VIRTUAL_COV variable changed to NO_VIRTUAL_COV. configure.ac file updated.
  => Default behaviour is now /really/ to use covariant return type with
	virtual inheritence, even when importing the files in an IDE. To use the old
	compilers behaviour, one must set the NO_VIRTUAL_COV preproc variable.
* Several useless 'VIRTUAL_COV' test removed.
* A few more virtual inheritences removed for optimization sake. 
* setMinimumBranchLength now reinitializes only the branch lengths parameters.

02/04/07 Nicolas Galtier
* Bug fixed in TreeTemplate assignment operator.

06/03/07 Julien Dutheil
* New Id gestion in TreeTemplate.
  New tools to deal with ids in TreeTools and TreeTemplateTools.

03/03/07 Julien Dutheil
* Bug fixed in simulation with continuous rate (no more exception thrown for
  duplicate site position).

22/02/07 Julien Dutheil
* Distance estimation now works properly with
MarkovModulatedSubstitutionModel.

17/02/07 Julien Dutheil
* New (string,string) operator in DistanceMatrix.
* New methods getState in SubstitutionModel and getRate in MarkovModulatedSubstitutionModel.
* Simulations now work correctly with a MarkovModulatedSubstitutionModel.
* SubstitutionModel are now clonable.
* PhylogeneticsApplicationTools: now one may chose to not re-estimate branch
lengths.

05/02/07 Bastien Boussau & Julien Dutheil
* Node properties are now splitted into NodeProperties and BranchProperties.
  Bootstrap values belong to the last category, and are now properly updated
	when rerooting a tree.

28/01/07 -*- Version 1.3.1 -*-

27/01/07 Julien Dutheil
* Change getTree method in NNISearchable interface to getTopology, and
getValue to getTopologyValue.
  This solve a bug in DRHomogeneousTreeLikelihood and avoid confusion with
	TreeLikelihood::getTree method, although both methods are identical.
* No more dynamic_cast in NNITopologySearch + bug solved in methods FAST and BETTER.
* Remove non required virtual inheritence to solve linker errors.

19/01/07 -*- Version 1.3 -*-

19/01/07 Julien Dutheil
* Removed duplicated functions in HomogeneousTreeLikelihood.
* Code update

10/01/07 Julien Dutheil
* Parsimony classes updated to match the new NNISearchable implementation.

03/01/07 Julien Dutheil
* --enable-virtual-cov option in configure script is now set by default.
* The Tree interface inherits from Clonable.
* TreeLikelihood and TreeParsimonyScore now implement the Clonable interface.
* Use node ids instead of node pointers in all Data structure (likelihood and
		parsimony).
* NNISearchable interface rewritten, now use nodes id instead of pointers.
  It now also inherits from Clonable and a new method getValue() was added.
* PhyML option in NNITopologySearch now properly implemented (check if
		multiple NNI really improve score).
* DRHomogeneousTreeLikelihood now implements the NNISearchable interface!

24/11/06 Julien Dutheil
* HomogeneousSiteSimulator now properly inherits from SequenceSimulator interface.
* New continuous rate simulation option in HomogeneousSiteSimulator.

13/10/06 Julien Dutheil
* TreeTools class was reorganized, augmented, more documented and splitted into TreeTools and TreeTemplateTools.
* Tree, TreeTemplate and Node imporved (Exception support, etc.).
* Small bugs fixed in TreeTemplate.

04/10/06 Julien Dutheil
* New function TreeTools::getHeight(Node).
* "trees" file now includes TreeTemplate.h

28/08/06 -*- Version 1.2.0 -*-

28/08/06 Julien Dutheil
* SubstitutionModel: new methods getNumberOfStates().
* Covarion process:
  + New MarkovModulatedSubstitutionModel abstract class,
  + New SSRVSubstitution model implementation.
* PhylogeneticsApplicationTools:
  + No more exit(-1) in functions, Exception thrown instead.
  + New method getCovarionProcess().
* Optimization: rough optimization now applies when other parameters than branch length are found.
* New copy constructor and assignation operator in ProbabilisticSubstitutionMapping class.

01/08/06 Julien Dutheil
* Bug fixed in GTR model: normalization constant was incorrect.

12/07/06 Julien Dutheil
* Bug fixed in DistanceEstimation constructor.

06/06/06 Julien Dutheil
* Bug fixed in F84 model. Substitution matrix is now correct!

31/05/06 Julien Dutheil
* HomogeneousTreeLikelihood classes now have a minimum for branch length, the default being 0.000001 (included).
* Improved PseudoNewtonOptimizer, faster and no more stucked in local maximum (B. Nabohlz data test).

30/05/06 Julien Dutheil
* Improved TreeTools::nodeToParenthesis[Tree] method and Newick parser for writting.

23/05/06 Julien Dutheil
* New F84 model.

04/05/06 Julien Dutheil
* Improved TreeTools::parenthesisToNode[Tree] method and Newick parser.

18/04/06 -*- Version 1.1.0 -*-

18/04/06 Julien Dutheil
* New Factory classes: SubstitutionModelFactory, IOTreeFactory, IOMatrixFactory.
13/04/06 Vincent Ranwez
* Bug fixed in NeighborJoining: finalStep now produces correct branch lengths.
* New BioNJ distance method.
13/04/06 Julien Dutheil
* DistanceEstimation improved: copy constructor and assignment operator + resetAdditionalParameters() method.
10/04/06 Julien Dutheil
* TreeTemplate<N>(Tree) now properly clone branch lengths.
06/04/06 Julien Dutheil 
* New substitution mapping classes.
14/03/06 Julien Dutheil
* Simulation classes redesigned. More simulation methods added.
09/03/06 Julien Dutheil
* TreeLikelihood classes have now the setData() method to compute likelihood of a new dataset without changing parameters.
Constructors now have a tree pointer as argument, and a new constructor without dataset has been added.
02/03/06 Julien Dutheil
* Bug fixed in TreeTools::cloneSubtree(), bad contructor call for class Node.
16/01/06 Julien Dutheil
* TreeTemplate(Tree) copy constructor.
16/01/06 Julien Dutheil
* writeId option in Newick TreeIO.
21/12/05 Julien Dutheil
* newOutGroup fixed in class TreeTemplate.
Branch lengths are now properly updated. Root id is also corrected.
New function getNextId in class tree.
12/12/05 Julien Dutheil
* getTotalLength, setBranchLengths, setVoidBranchLengths and scaleTree in TreeTemplate: now work when root node has no length.
