}
@Override
- public ContactMatrixI getContactMatrixFor(AlignmentAnnotation ann)
+ public ContactMatrixI getContactMatrixFor(AlignmentAnnotation _aa)
{
- return cmholder.getContactMatrixFor(ann);
+ ContactMatrixI cm = cmholder.getContactMatrixFor(_aa);
+ if (cm == null && _aa.groupRef != null)
+ {
+ cm = _aa.groupRef.getContactMatrixFor(_aa);
+ }
+ if (cm == null && _aa.sequenceRef != null)
+ {
+ cm = _aa.sequenceRef.getContactMatrixFor(_aa);
+ if (cm == null)
+ {
+ // TODO fix up this logic and unify with getContactListFor
+ cm = _aa.sequenceRef.getDatasetSequence().getContactMatrixFor(_aa);
+ }
+ }
+ return cm;
}
@Override
}
if (cl == null && _aa.sequenceRef != null)
{
- int spos = _aa.sequenceRef.findPosition(column) - 1;
+ int spos = _aa.sequenceRef.findPosition(column);
if (spos >= _aa.sequenceRef.getStart()
&& spos <= 1 + _aa.sequenceRef.getEnd())
{
- cl = _aa.sequenceRef.getContactListFor(_aa, spos);
+ cl = _aa.sequenceRef.getContactListFor(_aa,
+ spos - _aa.sequenceRef.getStart());
if (cl == null && _aa.sequenceRef.getDatasetSequence() != null)
{
- _aa.sequenceRef.getDatasetSequence().getContactListFor(_aa, spos);
+ _aa.sequenceRef.getDatasetSequence().getContactListFor(_aa,
+ spos - _aa.sequenceRef.getStart());
}
}
}