private AlignmentAnnotation constructAnnotationFromScoreHolder(
AlignmentAnnotation annotation, String struct, TreeSet<Score> data)
{
- Annotation[] anns = new Annotation[struct.length()];
+ Annotation[] anns = new Annotation[gapMap!= null ? gapMap.length+1 : struct.length()];
if (data != null
&& data.size() > 1
basePairs.put(score.getRanges().first(), new Float(score
.getScores().get(0)));
}
- for (int i = 0; i < struct.length(); i++)
+
+ for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
{
-
+ if (gapMap!=null)
+ {
+ // skip any gapped columns in the input data
+ while (!gapMap[ri])
+ {
+ ri++;
+ }
+ }
// Return all the contacts associated with position i
LinkedHashMap<Range, Float> contacts = isContact(basePairs, i + 1);
}
}
- anns[i] = new Annotation(struct.substring(i, i + 1), description,
+ anns[ri] = new Annotation(struct.substring(i, i + 1), description,
isSS(struct.charAt(i)), prob);
}
}
else if (data == null || data.size() == 1)
{
- for (int i = 0; i < struct.length(); i++)
+ for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
{
-
- anns[i] = new Annotation(struct.substring(i, i + 1), "",
+ if (gapMap!=null)
+ {
+ // skip any gapped columns in the input data
+ while (!gapMap[ri] && ri<gapMap.length)
+ {
+ ri++;
+ }
+ if (ri==gapMap.length)
+ {
+ break;
+ }
+ }
+ anns[ri] = new Annotation(struct.substring(i, i + 1), "",
isSS(struct.charAt(i)), Float.NaN);
}