From 76efefe7ea3cfd6cae8347a21379e2f1cdaf886e Mon Sep 17 00:00:00 2001
From: "Workum, Dirk-Jan van" <dirk-jan.vanworkum@wur.nl>
Date: Wed, 9 Mar 2022 12:59:25 +0000
Subject: [PATCH] small improvement to running fasttree

---
 .../pangenome/MultipleSequenceAlignment.java  | 25 +++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/main/java/nl/wur/bif/pantools/pangenome/MultipleSequenceAlignment.java b/src/main/java/nl/wur/bif/pantools/pangenome/MultipleSequenceAlignment.java
index 95c5984cd..e70796040 100644
--- a/src/main/java/nl/wur/bif/pantools/pangenome/MultipleSequenceAlignment.java
+++ b/src/main/java/nl/wur/bif/pantools/pangenome/MultipleSequenceAlignment.java
@@ -1585,7 +1585,7 @@ public class MultipleSequenceAlignment {
                 String output = outPath + "nuc" + dot + "newick";
 
                 if (!check_if_file_exists(output)) {
-                    Future<?> f = es.submit(new runFasttree(input, output));
+                    Future<?> f = es.submit(new runFasttree(input, output, true));
                     futures.add(f);
                 }
             }
@@ -1595,7 +1595,7 @@ public class MultipleSequenceAlignment {
                 String output = outPath + "prot" + dot + "newick";
 
                 if (!check_if_file_exists(output)) {
-                    Future<?> f = es.submit(new runFasttree(input, output));
+                    Future<?> f = es.submit(new runFasttree(input, output, false));
                     futures.add(f);
                 }
             }
@@ -2308,17 +2308,24 @@ public class MultipleSequenceAlignment {
     private class runFasttree implements Callable<String> {
         private final String input;
         private final String output;
+        private final boolean isNucleotide;
+        private final String log;
 
-        public runFasttree(String input, String output) {
+        public runFasttree(String input, String output, boolean isNucleotide) {
             this.input = input;
             this.output = output;
+            this.isNucleotide = isNucleotide;
+            this.log = output + ".log";
         }
 
         public String call() {
-            String fasttreeCommand = "FastTree " +
-                    input +
-                    " 1> " +
-                    output;
+            String fasttree = "FastTree ";
+            if (isNucleotide) {
+                fasttree += "-nt ";
+            }
+            String fasttreeCommand = fasttree + input +
+                    " 1> " + output +
+                    " 2> " + log;
 
             if (LOG) {
                 System.out.println(fasttreeCommand);
@@ -2326,6 +2333,10 @@ public class MultipleSequenceAlignment {
 
             runCommand(fasttreeCommand); //run FastTree
 
+            if (!LOG) {
+                delete_file_full_path(log);
+            }
+
             return "Starting alignment of " + input;
         }
 
-- 
GitLab