*/
private Mapping mapToHmmConsensus;
+ // stores background frequencies of alignment from which this model came
+ private Map<Character, Float> backgroundFrequencies;
+
/**
* Constructor
*/
this.symbolIndexLookup = hmm.symbolIndexLookup;
this.fileHeader = new String(hmm.fileHeader);
this.hmmSeq = sq;
+ this.backgroundFrequencies = hmm.getBackgroundFrequencies();
if (sq.getDatasetSequence() == hmm.mapToHmmConsensus.getTo())
{
// same dataset sequence e.g. after realigning search results
int start = hasMap ? getNode(1).getResidueNumber() : 1;
int endResNo = hasMap ? getNode(nodes.size() - 1).getResidueNumber()
: (start + getLength() - 1);
- char[] sequence = new char[endResNo + 1];
+ char[] sequence = new char[endResNo];
int lastResNo = start - 1;
int seqOffset = -1;
int gapCount = 0;
+
for (int seqN = 0; seqN < start; seqN++)
{
sequence[seqN] = GAP_DASH;
seqOffset++;
}
-
+
for (int nodeNo = 1; nodeNo < nodes.size(); nodeNo++)
{
HMMNode node = nodes.get(nodeNo);
{
this.hmmSeq = hmmSeq;
}
+
+ public void setBackgroundFrequencies(Map<Character, Float> bkgdFreqs)
+ {
+ backgroundFrequencies = bkgdFreqs;
+ }
+
+ public void setBackgroundFrequencies(ResidueCount bkgdFreqs)
+ {
+ backgroundFrequencies = new HashMap<>();
+
+ int total = bkgdFreqs.getTotalResidueCount();
+
+ for (char c : bkgdFreqs.getSymbolCounts().symbols)
+ {
+ backgroundFrequencies.put(c, bkgdFreqs.getCount(c) * 1f / total);
+ }
+
+ }
+
+ public Map<Character, Float> getBackgroundFrequencies()
+ {
+ return backgroundFrequencies;
+ }
}