X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=runner%2Fcompbio%2Frunner%2Fdisorder%2FDisembl.java;h=b6453a7131553acec25ed814396dbaaac75ee318;hb=b2a2fdc2bd95a64b3908d8ea2f31270b6c7199d3;hp=716859f27d5dcf276195fc714d699970a5bb125f;hpb=8033a51860de2200a54e64add0809d6780f5b092;p=jabaws.git diff --git a/runner/compbio/runner/disorder/Disembl.java b/runner/compbio/runner/disorder/Disembl.java index 716859f..b6453a7 100644 --- a/runner/compbio/runner/disorder/Disembl.java +++ b/runner/compbio/runner/disorder/Disembl.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2009 Peter Troshin JAva Bioinformatics Analysis Web Services - * (JABAWS) @version: 1.0 This library is free software; you can redistribute it + * Copyright (c) 2011 Peter Troshin 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 This library is distributed in the hope * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied @@ -14,60 +14,91 @@ package compbio.runner.disorder; -import java.util.Arrays; -import java.util.Map; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import org.apache.log4j.Logger; -import compbio.data.sequence.Score; -import compbio.engine.client.Executable; +import compbio.data.sequence.ScoreManager; +import compbio.data.sequence.SequenceUtil; +import compbio.data.sequence.UnknownFileFormatException; import compbio.engine.client.PipedExecutable; import compbio.engine.client.SkeletalExecutable; -import compbio.metadata.Limit; -import compbio.metadata.LimitsManager; import compbio.metadata.ResultNotAvailableException; -import compbio.runner.Util; +import compbio.runner.RunnerUtil; /** - * @see DisEMBL + * DisEMBL.py smooth_frame peak_frame join_frame fold_coils fold_hotloops + * fold_rem465 sequence_file print * - * DisEMBL.py smooth_frame peak_frame join_frame fold_coils fold_hotloops - * fold_rem465 sequence_file print 'A default run would be: ./DisEMBL.py 8 - * 8 4 1.2 1.4 1.2 fasta_file > out' new DisEMBL is at - * /homes/pvtroshin/soft/DisEMBL-1.4raw + * 'A default run would be: ./DisEMBL.py 8 8 4 1.2 1.4 1.2 fasta_file > out' * - * This is not a standard DisEMBL! The script has been modified! DisEMBL.py - * smooth_frame peak_frame join_frame fold_coils fold_hotloops fold_rem465 - * [mode] < fasta_file > out print + * This version of DisEMBL is 1.4 (latest available for download in Feb 2011) + * capable of outputting raw values + * + * The values of the parameters are hard coded in DisEMBL.py script. + * smooth_frame=8 peak_frame=8 join_frame=4 fold_coils=1.2 fold_hotloops=1.4 + * fold_rem465=1.2 + * + * Changing these values are not recommended by developers, apart from smoothing + * window. However, 5 orders of magnitude changes in this parameter does not + * change the output so allowing this change also seems pointless. Finally, the + * binary, DisEMBL depends on - Tisean is not happy with arbitruary changes to + * these values, so changing them can lead to problems. + * + * + * This is not a standard DisEMBL! The script has been modified! * - * 'A default run would be: ./DisEMBL.py 8 8 4 1.2 1.4 1.2 < fasta_file' - * print 'Mode: "default"(nothing) or "scores" which will give scores per - * residue in TAB separated format' */ -public class Disembl extends SkeletalExecutable - implements - PipedExecutable { +public class Disembl extends SkeletalExecutable implements PipedExecutable { private static Logger log = Logger.getLogger(Disembl.class); - // Cache for Limits information - private static LimitsManager limits; - - public static final String KEY_VALUE_SEPARATOR = Util.SPACE; + /** + * For the region to be considered disordered the values must exceed these + */ + public final double COILS_EXPECTATION_THRESHOLD = 0.43; + public final double REM_EXPECTATION_THRESHOLD = 0.5; + public final double LOOPS_EXPECTATION_THRESHOLD = 0.086; + /* The parameter list there must not contain same values! */ public Disembl() { // remove default input to prevent it to appear in the parameters list // that could happen if the parameters are set first // super.setInput(""); - addParameters(Arrays.asList("8", "8", "4", "1.2", "1.4", "1.2", - "scores")); } @SuppressWarnings("unchecked") - public Map getResults(String workDirectory) + @Override + public ScoreManager getResults(String workDirectory) throws ResultNotAvailableException { - return null; + InputStream inStream = null; + ScoreManager results = null; + + try { + inStream = new FileInputStream(new File(workDirectory, getOutput())); + results = ScoreManager.newInstance(SequenceUtil + .readDisembl(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); + } + log.trace("DRESULTS: " + results); + return results; } @Override @@ -77,41 +108,10 @@ public class Disembl extends SkeletalExecutable return this; } + @SuppressWarnings("unchecked") @Override - public Limit getLimit(String presetName) { - if (limits == null) { - limits = getLimits(); - } - - Limit limit = null; - if (limits != null) { - // this returns default limit if preset is undefined! - limit = limits.getLimitByName(presetName); - } - // 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(); - } - return limit; - } - - @Override - public LimitsManager getLimits() { - // synchronise on static field - synchronized (log) { - if (limits == null) { - limits = Util.getLimits(this.getClass()); - } - } - return limits; - } - - @Override - public Class> getType() { - return this.getClass(); + public Class getType() { + return (Class) this.getClass(); } }