Get rind of NativeClusterJob interface as pretty much every jobs best to use some...
[jabaws.git] / runner / compbio / runner / msa / Mafft.java
index 508d5f7..dbe49fe 100644 (file)
@@ -27,15 +27,36 @@ import org.apache.log4j.Logger;
 \r
 import compbio.data.sequence.Alignment;\r
 import compbio.data.sequence.UnknownFileFormatException;\r
+\r
 import compbio.engine.client.PipedExecutable;\r
 import compbio.engine.client.SkeletalExecutable;\r
 import compbio.metadata.ResultNotAvailableException;\r
 import compbio.runner.Util;\r
 \r
+/**\r
+ * \r
+ * @author pvtroshin\r
+ *\r
+ */\r
 public class Mafft extends SkeletalExecutable<Mafft>\r
                implements\r
                        PipedExecutable<Mafft> {\r
-\r
+       /*\r
+        * TODO get rid of piping: Mafft now supports --out option for output file. \r
+     * TODO enable multithreading support\r
+        */\r
+       \r
+       /**\r
+        * Number of cores to use, not used if "mafft.cluster.cpunum" property \r
+        * is not defined and in case of local execution \r
+        */\r
+       private int ncoreNumber = 0;\r
+       \r
+       /*\r
+        * Number of cores parameter name\r
+        */\r
+       private final static String ncorePrm = "--thread";\r
+       \r
        private static Logger log = Logger.getLogger(Mafft.class);\r
 \r
        private static String autoOption = "--auto";\r
@@ -88,6 +109,21 @@ public class Mafft extends SkeletalExecutable<Mafft>
                return this;\r
        }\r
 \r
+\r
+       public void setNCore(int ncoreNumber) {\r
+               if (ncoreNumber < 1 || ncoreNumber > 100) {\r
+                       throw new IndexOutOfBoundsException(\r
+                                       "Number of cores must be within 1 and 100 ");\r
+               }\r
+               this.ncoreNumber = ncoreNumber;\r
+               cbuilder.setParam(ncorePrm, Integer.toString(getNCore()));\r
+       }\r
+\r
+       int getNCore() {\r
+               return ncoreNumber;\r
+       }\r
+       \r
+       \r
        @SuppressWarnings("unchecked")\r
        @Override\r
        public Class<Mafft> getType() {\r