X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FContactListImpl.java;h=dc7982b1a59f94639af3b3554388405208c30fdb;hb=b028e684c807365decd0c6e6111aa4bf368a6fa8;hp=6eb4cdb301afe4680b4015ef4b4cefbd3a0927c2;hpb=4a560601f94b229cca59f64561bf87f146cc896b;p=jalview.git diff --git a/src/jalview/datamodel/ContactListImpl.java b/src/jalview/datamodel/ContactListImpl.java index 6eb4cdb..dc7982b 100644 --- a/src/jalview/datamodel/ContactListImpl.java +++ b/src/jalview/datamodel/ContactListImpl.java @@ -1,5 +1,29 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.datamodel; +import java.awt.Color; + +import jalview.renderer.ContactGeometry.contactInterval; + /** * helper class to compute min/max/mean for a range on a contact list * @@ -10,7 +34,6 @@ public class ContactListImpl implements ContactListI { ContactListProviderI clist; - public static ContactListI newContactList(ContactListProviderI list) { return new ContactListImpl(list); @@ -22,6 +45,12 @@ public class ContactListImpl implements ContactListI } @Override + public int getPosition() + { + return clist.getPosition(); + } + + @Override public double getContactAt(int column) { return clist.getContactAt(column); @@ -36,6 +65,7 @@ public class ContactListImpl implements ContactListI @Override public ContactRange getRangeFor(int from_column, int to_column) { + // TODO: consider caching ContactRange for a particular call ? if (clist instanceof ContactListI) { // clist may implement getRangeFor in a more efficient way, so use theirs @@ -45,15 +75,15 @@ public class ContactListImpl implements ContactListI { from_column = 0; } - if (to_column > getContactHeight()) + if (to_column >= getContactHeight()) { - to_column = getContactHeight(); + to_column = getContactHeight() - 1; } ContactRange cr = new ContactRange(); cr.setFrom_column(from_column); cr.setTo_column(to_column); double tot = 0; - for (int i = from_column; i < to_column; i++) + for (int i = from_column; i <= to_column; i++) { double contact = getContactAt(i); tot += contact; @@ -78,9 +108,9 @@ public class ContactListImpl implements ContactListI } } } - if (tot > 0) + if (tot > 0 && to_column > from_column) { - cr.setMean(tot / (to_column - from_column)); + cr.setMean(tot / (1 + to_column - from_column)); } else { @@ -89,4 +119,15 @@ public class ContactListImpl implements ContactListI return cr; } + @Override + public int[] getMappedPositionsFor(int cStart, int cEnd) + { + return clist.getMappedPositionsFor(cStart, cEnd); + } + + @Override + public Color getColourForGroup() + { + return clist.getColourForGroup(); + } }