X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=runner%2Fcompbio%2Frunner%2Fdisorder%2FJronn.java;h=55200c204d1b383fc2795df9fc2f0fe43b3f44bc;hb=HEAD;hp=0c4245a7b40b5c62b0b184f5528a603a7765226a;hpb=48190e32e896a6f674284844a9ae75605aa40157;p=jabaws.git diff --git a/runner/compbio/runner/disorder/Jronn.java b/runner/compbio/runner/disorder/Jronn.java index 0c4245a..55200c2 100644 --- a/runner/compbio/runner/disorder/Jronn.java +++ b/runner/compbio/runner/disorder/Jronn.java @@ -1,6 +1,6 @@ -/* Copyright (c) 2009 Peter Troshin +/* Copyright (c) 2011 Peter Troshin * - * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 + * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.0 * * This library is free software; you can redistribute it and/or modify it under the terms of the * Apache License version 2 as published by the Apache Software Foundation @@ -28,13 +28,12 @@ import java.util.List; import org.apache.log4j.Logger; -import compbio.data.sequence.AnnotatedSequence; +import compbio.data.sequence.ScoreManager; import compbio.data.sequence.SequenceUtil; import compbio.data.sequence.UnknownFileFormatException; +import compbio.engine.client.CommandBuilder; import compbio.engine.client.Executable; import compbio.engine.client.SkeletalExecutable; -import compbio.metadata.Limit; -import compbio.metadata.LimitsManager; import compbio.metadata.ResultNotAvailableException; import compbio.runner.Util; @@ -48,117 +47,124 @@ import compbio.runner.Util; */ public class Jronn extends SkeletalExecutable { - private static Logger log = Logger.getLogger(Jronn.class); - - // Cache for Limits information - private static LimitsManager limits; - - public static final String KEY_VALUE_SEPARATOR = Util.SPACE; - public static final String STAT_FILE = "stat.txt"; - - public Jronn() { - addParameters(Arrays.asList("-jar", getLibPath(), "-n=1", "-s=" - + STAT_FILE, "-f=H")); - } - - @SuppressWarnings("unchecked") - @Override - public List getResults(String workDirectory) - throws ResultNotAvailableException { - List sequences = null; - try { - InputStream inStream = new FileInputStream(new File(workDirectory, - getOutput())); - sequences = SequenceUtil.readJRonn(inStream); - inStream.close(); - } catch (FileNotFoundException e) { - log.error(e.getMessage(), e.getCause()); - throw new ResultNotAvailableException(e); - } catch (IOException e) { - log.error(e.getMessage(), e.getCause()); - throw new ResultNotAvailableException(e); - } catch (UnknownFileFormatException e) { - log.error(e.getMessage(), e.getCause()); - throw new ResultNotAvailableException(e); - } catch (NullPointerException e) { - log.error(e.getMessage(), e.getCause()); - throw new ResultNotAvailableException(e); + private static Logger log = Logger.getLogger(Jronn.class); + + /** + * Number of cores to use, defaults to 1 for local execution or the value of + * "jronn.cluster.cpunum" property for cluster execution + */ + private int ncoreNumber = 0; + + private final String ncorePrm = "-n="; + + public static final String KEY_VALUE_SEPARATOR = Util.SPACE; + public static final String STAT_FILE = "stat.txt"; + + public Jronn() { + addParameters(Arrays.asList("-jar", getLibPath(), "-s=" + STAT_FILE, + "-f=H")); } - return sequences; - } - private static String getLibPath() { + @SuppressWarnings("unchecked") + @Override + public ScoreManager getResults(String workDirectory) + throws ResultNotAvailableException { + ScoreManager sequences = null; + try { + InputStream inStream = new FileInputStream(new File(workDirectory, + getOutput())); + sequences = ScoreManager.newInstanceSingleScore(SequenceUtil + .readJRonn(inStream)); + inStream.close(); + } catch (FileNotFoundException e) { + log.error(e.getMessage(), e.getCause()); + throw new ResultNotAvailableException(e); + } catch (IOException e) { + log.error(e.getMessage(), e.getCause()); + throw new ResultNotAvailableException(e); + } catch (UnknownFileFormatException e) { + log.error(e.getMessage(), e.getCause()); + throw new ResultNotAvailableException(e); + } catch (NullPointerException e) { + log.error(e.getMessage(), e.getCause()); + throw new ResultNotAvailableException(e); + } + return sequences; + } - String settings = ph.getProperty("jronn.jar.file"); - if (compbio.util.Util.isEmpty(settings)) { - throw new NullPointerException( - "Please define jronn.jar.file property in Executable.properties file" - + "and initialize it with the location of jronn jar file"); + private static String getLibPath() { + String settings = ph.getProperty("jronn.jar.file"); + if (compbio.util.Util.isEmpty(settings)) { + throw new NullPointerException( + "Please define jronn.jar.file property in Executable.properties file" + + "and initialize it with the location of jronn jar file"); + } + if (new File(settings).isAbsolute()) { + // Jronn jar can be found so no actions necessary + // no further actions is necessary + return settings; + } + return compbio.engine.client.Util.convertToAbsolute(settings); } - if (new File(settings).isAbsolute()) { - // Jronn jar can be found so no actions necessary - // no further actions is necessary - return settings; + + @Override + public List getCreatedFiles() { + return Arrays.asList(getOutput(), getError()); } - return compbio.engine.client.Util.convertToAbsolute(settings); - } - - @Override - public List getCreatedFiles() { - return Arrays.asList(getOutput(), getError()); - } - - @Override - public Jronn setInput(String inFile) { - super.setInput(inFile); - cbuilder.setParam("-i=" + inFile); - return this; - } - - @Override - public Jronn setOutput(String outFile) { - super.setOutput(outFile); - cbuilder.setParam("-o=" + outFile); - return this; - } - - @Override - public Limit getLimit(String presetName) { - if (limits == null) { - limits = getLimits(); + + @Override + public Jronn setInput(String inFile) { + super.setInput(inFile); + cbuilder.setParam("-i=" + inFile); + return this; } - Limit limit = null; - if (limits != null) { - // this returns default limit if preset is undefined! - limit = limits.getLimitByName(presetName); + + @Override + public Jronn setOutput(String outFile) { + super.setOutput(outFile); + cbuilder.setParam("-o=" + outFile); + return this; } - // If limit is not defined for a particular preset, then return default - // limit - if (limit == null) { - log.debug("Limit for the preset " + presetName - + " is not found. Using default"); - limit = limits.getDefaultLimit(); + + @SuppressWarnings("unchecked") + @Override + public Class getType() { + return (Class) this.getClass(); + } + + public static String getStatFile() { + return STAT_FILE; } - return limit; - } - - @Override - public LimitsManager getLimits() { - // synchronise on static field - synchronized (log) { - if (limits == null) { - limits = Util.getLimits(this.getClass()); - } + + public void setNCore(int ncoreNumber) { + if (ncoreNumber < 1 || ncoreNumber > 100) { + throw new IndexOutOfBoundsException( + "Number of cores must be within 1 and 100 "); + } + this.ncoreNumber = ncoreNumber; + cbuilder.setParam(ncorePrm + Integer.toString(getNCore())); } - return limits; - } - @Override - public Class> getType() { - return this.getClass(); - } + int getNCore() { + return ncoreNumber; + } + + @Override + public CommandBuilder getParameters(ExecProvider provider) { + // If number of cores is provided, set it for the cluster execution + // only! + if (provider == Executable.ExecProvider.Cluster) { + int cpunum = SkeletalExecutable.getClusterCpuNum(getType()); + cpunum = (cpunum == 0) ? 1 : cpunum; + setNCore(cpunum); + } else { + // Limit number of cores to 1 for ANY execution which does not set + // Ncores explicitly using setNCore method or is run on local VM + if (ncoreNumber == 0) { + setNCore(1); + } + } + return super.getParameters(provider); + } - public static String getStatFile() { - return STAT_FILE; - } }