git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
94445a5
)
JAL-3011 JAL-2719 JAL-1958 add posterior probability scores to score and value annota...
author
Jim Procter
<jprocter@issues.jalview.org>
Thu, 31 May 2018 16:30:49 +0000
(17:30 +0100)
committer
Jim Procter
<jprocter@issues.jalview.org>
Thu, 31 May 2018 16:30:49 +0000
(17:30 +0100)
src/jalview/hmmer/HMMSearch.java
patch
|
blob
|
history
diff --git
a/src/jalview/hmmer/HMMSearch.java
b/src/jalview/hmmer/HMMSearch.java
index
6cda421
..
a3ac034
100644
(file)
--- a/
src/jalview/hmmer/HMMSearch.java
+++ b/
src/jalview/hmmer/HMMSearch.java
@@
-4,6
+4,7
@@
import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
import jalview.datamodel.HiddenMarkovModel;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.datamodel.HiddenMarkovModel;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
@@
-340,7
+341,23
@@
public class HMMSearch extends HmmerCommand
StockholmFile file = new StockholmFile(new FileParse(
inputAlignmentTemp.getAbsolutePath(), DataSourceType.FILE));
seqs = file.getSeqsAsArray();
StockholmFile file = new StockholmFile(new FileParse(
inputAlignmentTemp.getAbsolutePath(), DataSourceType.FILE));
seqs = file.getSeqsAsArray();
-
+ // look for PP cons and ref seq in alignment only annotation
+ AlignmentAnnotation modelpos = null, ppcons = null;
+ for (AlignmentAnnotation aa : file.getAnnotations())
+ {
+ if (aa.sequenceRef == null)
+ {
+ if (aa.label.equals("Reference Positions")) // RF feature type in
+ // stockholm parser
+ {
+ modelpos = aa;
+ }
+ if (aa.label.equals("Posterior Probability"))
+ {
+ ppcons = aa;
+ }
+ }
+ }
readTable(searchOutputFile);
int seqCount = Math.min(seqs.length, seqsToReturn);
readTable(searchOutputFile);
int seqCount = Math.min(seqs.length, seqsToReturn);
@@
-355,6
+372,14
@@
public class HMMSearch extends HmmerCommand
else
{
AlignmentI al = new Alignment(hmmAndSeqs);
else
{
AlignmentI al = new Alignment(hmmAndSeqs);
+ if (ppcons != null)
+ {
+ al.addAnnotation(ppcons);
+ }
+ if (modelpos != null)
+ {
+ al.addAnnotation(modelpos);
+ }
AlignFrame alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
String ttl = "hmmSearch of " + databaseName + " using "
AlignFrame alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
String ttl = "hmmSearch of " + databaseName + " using "
@@
-430,13
+455,17
@@
public class HMMSearch extends HmmerCommand
&& !"".equals(line))
{
SequenceI seq = seqs[index];
&& !"".equals(line))
{
SequenceI seq = seqs[index];
+ AlignmentAnnotation pp = seq
+ .getAlignmentAnnotations("", "Posterior Probability")
+ .get(0);
Scanner scanner = new Scanner(line);
String str = scanner.next();
addScoreAnnotation(str, seq, "hmmsearch E-value",
Scanner scanner = new Scanner(line);
String str = scanner.next();
addScoreAnnotation(str, seq, "hmmsearch E-value",
- "Full sequence E-value");
+ "Full sequence E-value", pp);
str = scanner.next();
addScoreAnnotation(str, seq, "hmmsearch Score",
str = scanner.next();
addScoreAnnotation(str, seq, "hmmsearch Score",
- "Full sequence bit score");
+ "Full sequence bit score", pp);
+ seq.removeAlignmentAnnotation(pp);
scanner.close();
line = br.readLine();
index++;
scanner.close();
line = br.readLine();
index++;
@@
-457,10
+486,38
@@
public class HMMSearch extends HmmerCommand
protected void addScoreAnnotation(String value, SequenceI seq,
String label, String description)
{
protected void addScoreAnnotation(String value, SequenceI seq,
String label, String description)
{
+ addScoreAnnotation(value, seq, label, description, null);
+ }
+
+ /**
+ * A helper method that adds one score-only (non-positional) annotation to a
+ * sequence
+ *
+ * @param value
+ * @param seq
+ * @param label
+ * @param description
+ * @param pp
+ * existing posterior probability annotation - values copied to new
+ * annotation row
+ */
+ protected void addScoreAnnotation(String value, SequenceI seq,
+ String label, String description, AlignmentAnnotation pp)
+ {
try
{
try
{
- AlignmentAnnotation annot = new AlignmentAnnotation(label,
+ AlignmentAnnotation annot = null;
+ if (pp == null)
+ {
+ new AlignmentAnnotation(label,
description, null);
description, null);
+ }
+ else
+ {
+ annot = new AlignmentAnnotation(pp);
+ annot.label = label;
+ annot.description = description;
+ }
annot.setCalcId(HMMSEARCH);
double eValue = Double.parseDouble(value);
annot.setScore(eValue);
annot.setCalcId(HMMSEARCH);
double eValue = Double.parseDouble(value);
annot.setScore(eValue);