Package: release.debian.org
Severity: normal
User: release.debian....@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 <r...@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 <r...@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 <r...@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

Reply via email to