--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package fasttree
The patch fixes bug #781259 which rendered the package unusable.
Debdiff is attached.
unblock fasttree/2.1.7-2
-- System Information:
Debian Release: 7.8
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-4-amd64 (SMP w/1 CPU core)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru fasttree-2.1.7/debian/changelog fasttree-2.1.7/debian/changelog
--- fasttree-2.1.7/debian/changelog 2013-05-06 20:40:37.000000000 +0200
+++ fasttree-2.1.7/debian/changelog 2015-03-27 11:53:35.000000000 +0100
@@ -1,3 +1,14 @@
+fasttree (2.1.7-2) unstable; urgency=low
+
+ * Team upload
+ * Modify/add patches to use double precision and increase branch
+ length precision. This is absolutely crucial to prevent flawed datas
+ analysis as described e.g. in
+ http://darlinglab.org/blog/2015/03/23/not-so-fast-fasttree.html
+ Closes: #781259
+
+ -- Roland Fehrenbacher <rf@q-leap.de> Tue, 24 Mar 2015 18:37:23 +0000
+
fasttree (2.1.7-1) unstable; urgency=low
* New upstream version
diff -Nru fasttree-2.1.7/debian/patches/increase-branch-length-precision.patch fasttree-2.1.7/debian/patches/increase-branch-length-precision.patch
--- fasttree-2.1.7/debian/patches/increase-branch-length-precision.patch 1970-01-01 01:00:00.000000000 +0100
+++ fasttree-2.1.7/debian/patches/increase-branch-length-precision.patch 2015-03-26 17:22:50.000000000 +0100
@@ -0,0 +1,65 @@
+From 66d0f73b44065272ddefc71870156d35aad4df64 Mon Sep 17 00:00:00 2001
+From: Roland Fehrenbacher <rf@q-leap.de>
+Date: Tue, 24 Mar 2015 18:21:03 +0000
+Subject: [PATCH] Use double precision and increase branch length precision
+
+This is absolutely crucial to prevent flawed data analysis as
+described e.g. in
+http://darlinglab.org/blog/2015/03/23/not-so-fast-fasttree.html
+---
+ fasttree.c | 19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/fasttree.c b/fasttree.c
+index 12862e2..a8426ab 100644
+--- a/fasttree.c
++++ b/fasttree.c
+@@ -1,4 +1,10 @@
+ /*
++ * 2014/12/11 - Modifications to raise the precision of branch length
++ * estimation. This should accompany setting USE_DOUBLE.
++ * Search tolerances have been decreased to 1e-9 from
++ * their original 1e-4.
++ *
++ *
+ * FastTree -- inferring approximately-maximum-likelihood trees for large
+ * multiple sequence alignments.
+ *
+@@ -852,10 +858,13 @@ const double Log2 = 0.693147180559945;
+ were increased to prevent numerical problems in rare cases.
+ If compiled with -DUSE_DOUBLE then these minimums could be decreased.
+ */
+-const double MLMinBranchLengthTolerance = 1.0e-4; /* absolute tolerance for optimizing branch lengths */
++const double MLMinBranchLengthTolerance = 1.0e-9; /* absolute tolerance for optimizing branch lengths */
+ const double MLFTolBranchLength = 0.001; /* fractional tolerance for optimizing branch lengths */
+-const double MLMinBranchLength = 5.0e-4;
+-const double MLMinRelBranchLength = 2.5e-4; /* minimum of rate * length */
++const double MLMinBranchLength = 5.0e-9;
++const double MLMinRelBranchLength = 2.5e-9; /* minimum of rate * length */
++
++const double fPostTotalTolerance = 1.0e-20; /* mzd 2015/01/06, added as original assertion is violated when
++ MLMMinBranchLengthTolerance is decreased to 1e-9. */
+
+ int mlAccuracy = 1; /* Rounds of optimization of branch lengths; 1 means do 2nd round only if close */
+ double closeLogLkLimit = 5.0; /* If partial optimization of an NNI looks like it would decrease the log likelihood
+@@ -4962,7 +4971,7 @@ profile_t *PosteriorProfile(profile_t *p1, profile_t *p2,
+ double fPostTot = 0;
+ for (j = 0; j < 4; j++)
+ fPostTot += fPost[j];
+- assert(fPostTot > 1e-10);
++ assert(fPostTot > fPostTotalTolerance);
+ double fPostInv = 1.0/fPostTot;
+ #if 0 /* SSE3 is slower */
+ vector_multiply_by(fPost, fPostInv, 4);
+@@ -5025,7 +5034,7 @@ profile_t *PosteriorProfile(profile_t *p1, profile_t *p2,
+ fPost[j] = value >= 0 ? value : 0;
+ }
+ double fPostTot = vector_sum(fPost, 20);
+- assert(fPostTot > 1e-10);
++ assert(fPostTot > fPostTotalTolerance);
+ double fPostInv = 1.0/fPostTot;
+ vector_multiply_by(/*IN/OUT*/fPost, fPostInv, 20);
+ int ch = -1; /* the dominant character, if any */
+--
+2.1.4
+
diff -Nru fasttree-2.1.7/debian/patches/Makefile.patch fasttree-2.1.7/debian/patches/Makefile.patch
--- fasttree-2.1.7/debian/patches/Makefile.patch 2012-06-15 12:00:58.000000000 +0200
+++ fasttree-2.1.7/debian/patches/Makefile.patch 2015-03-26 17:22:50.000000000 +0100
@@ -1,18 +1,34 @@
-Description: As the original source is just a c-file, the Makefile
- needs to be created.
-Index: fasttree-2.1.0.c/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ fasttree-2.1.0.c/Makefile 2011-03-02 19:07:11.000000000 +0100
-@@ -0,0 +1,11 @@
+From 183c0d979cae6199e89ad11df1956e7f8dce13b0 Mon Sep 17 00:00:00 2001
+From: Roland Fehrenbacher <rf@q-leap.de>
+Date: Tue, 24 Mar 2015 18:25:21 +0000
+Subject: [PATCH] Create a Makefile
+
+Description:
+As the original source is just a c-file, a Makefile needs to be
+created. Also use double precision to prevent analysis flaws.
+---
+ Makefile | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+ create mode 100644 Makefile
+
+diff --git a/Makefile b/Makefile
+new file mode 100644
+index 0000000..599e62b
+--- /dev/null
++++ b/Makefile
+@@ -0,0 +1,12 @@
++ADD_CPPFLAGS = -DUSE_DOUBLE
+
+all: fasttree fasttreeMP
+
+fasttree: fasttree.c
-+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $< -lm
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(ADD_CPPFLAGS) $(LDFLAGS) -o $@ $< -lm
+
+fasttreeMP: fasttree.c
-+ $(CC) -DOPENMP -fopenmp $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $< -lm
++ $(CC) -DOPENMP -fopenmp $(CFLAGS) $(CPPFLAGS) $(ADD_CPPFLAGS) $(LDFLAGS) -o $@ $< -lm
+
+distclean clean:
+ rm -f fasttree
+--
+2.1.4
+
diff -Nru fasttree-2.1.7/debian/patches/series fasttree-2.1.7/debian/patches/series
--- fasttree-2.1.7/debian/patches/series 2012-04-02 10:15:17.000000000 +0200
+++ fasttree-2.1.7/debian/patches/series 2015-03-26 17:22:50.000000000 +0100
@@ -1 +1,2 @@
Makefile.patch
+increase-branch-length-precision.patch
--- End Message ---