X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fhmmer%2FJackHMMER.java;h=4435b144f26abe4c71b0008583ba38295ba76841;hb=dd2b17330673faf79c5e239afd163668fdb3fe0a;hp=1815ac4be729fc6a750e27d882389588eb5db4ca;hpb=ed581b841fe9361bfe80bb006df190a29df264fb;p=jalview.git diff --git a/src/jalview/hmmer/JackHMMER.java b/src/jalview/hmmer/JackHMMER.java index 1815ac4..4435b14 100644 --- a/src/jalview/hmmer/JackHMMER.java +++ b/src/jalview/hmmer/JackHMMER.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Hashtable; import java.util.List; import java.util.Scanner; @@ -39,6 +40,10 @@ public class JackHMMER extends HmmerCommand private String databaseName; + boolean searchAlignment = true; + + Hashtable sequencesHash; + /** * Constructor for the JackhmmerThread * @@ -72,13 +77,14 @@ public class JackHMMER extends HmmerCommand try { - File seqFile = FileUtils.createTempFile("seq", ".fa"); + File seqFile = FileUtils.createTempFile("seq", ".sto"); File hitsAlignmentFile = FileUtils.createTempFile("hitAlignment", ".sto"); File searchOutputFile = FileUtils.createTempFile("searchOutput", ".txt"); - exportSequence(seq, seqFile.getAbsoluteFile()); + exportStockholm(new SequenceI[] { seq }, seqFile.getAbsoluteFile(), + null); boolean ran = runCommand(searchOutputFile, hitsAlignmentFile, seqFile); @@ -159,7 +165,6 @@ public class JackHMMER extends HmmerCommand String seqScoreCutoff = null; String domScoreCutoff = null; databaseName = "Alignment"; - boolean searchAlignment = false; if (params != null) { @@ -167,26 +172,16 @@ public class JackHMMER extends HmmerCommand { String name = arg.getName(); - if (MessageManager.getString("action.search").equals(name)) - { - searchAlignment = arg.getValue().equals( - MessageManager.getString(JackHMMER.THIS_ALIGNMENT_KEY)); - } - else if (MessageManager.getString(DATABASE_KEY).equals(name)) - { - dbPath = arg.getValue(); - int pos = dbPath.lastIndexOf(File.separator); - databaseName = dbPath.substring(pos + 1); - databaseFile = new File(dbPath); - } - else if (MessageManager.getString(REPORTING_CUTOFF_KEY) + if (MessageManager.getString(REPORTING_CUTOFF_KEY) .equals(name)) { - if (CUTOFF_EVALUE.equals(arg.getValue())) + if (MessageManager.getString(CUTOFF_EVALUE) + .equals(arg.getValue())) { useEvalueCutoff = true; } - else if (CUTOFF_SCORE.equals(arg.getValue())) + else if (MessageManager.getString(CUTOFF_SCORE) + .equals(arg.getValue())) { useScoreCutoff = true; } @@ -217,6 +212,7 @@ public class JackHMMER extends HmmerCommand databaseName = dbPath.substring(pos + 1); databaseFile = new File(dbPath); } + searchAlignment = false; } } } @@ -244,10 +240,15 @@ public class JackHMMER extends HmmerCommand * no external database specified for search, so * export current alignment as 'database' to search */ - databaseFile = FileUtils.createTempFile("database", ".fa"); + databaseFile = FileUtils.createTempFile("database", ".sto"); AlignmentI al = af.getViewport().getAlignment(); - deleteHmmSequences(al); - exportFasta(al, databaseFile); + AlignmentI copy = new Alignment(al); + + deleteHmmSequences(copy); + + sequencesHash = stashSequences(copy.getSequencesArray()); + + exportStockholm(copy.getSequencesArray(), databaseFile, null); } args.add(getFilePath(seqFile, true)); @@ -275,6 +276,11 @@ public class JackHMMER extends HmmerCommand inputAlignmentTemp.getAbsolutePath(), DataSourceType.FILE)); seqs = file.getSeqsAsArray(); + if (searchAlignment) + { + recoverSequences(sequencesHash, seqs); + } + readTable(searchOutputFile); int seqCount = Math.min(seqs.length, seqsToReturn); @@ -360,10 +366,11 @@ public class JackHMMER extends HmmerCommand annot.setEValue(dEValue); double dBitScore = Double.parseDouble(bitScore); - annot.setEValue(dBitScore); + annot.setBitScore(dBitScore); annot.setSequenceRef(seq); seq.addAlignmentAnnotation(annot); + } catch (NumberFormatException e) { System.err.println("Error parsing " + label + " from " + eValue