X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignmentOrder.java;h=9ba85860964dfb646219381de4c8a83af9ca2647;hb=797df64fa2a0a30773d0f48f5494d4155e5a8be3;hp=445671d47addb1630edb3832f73b29102d854fa1;hpb=33c59ebddbc51bbd26bc4c8576ec17c1498b19e8;p=jalview.git diff --git a/src/jalview/datamodel/AlignmentOrder.java b/src/jalview/datamodel/AlignmentOrder.java index 445671d..9ba8586 100755 --- a/src/jalview/datamodel/AlignmentOrder.java +++ b/src/jalview/datamodel/AlignmentOrder.java @@ -1,117 +1,326 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * + * 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 . + */ package jalview.datamodel; import java.util.*; -/** - *

Title:

- * - *

Description:

- * - *

Copyright: Copyright (c) 2004

- * - *

Company: Dundee University

- * - * @author not attributable - * @version 1.0 - */ public class AlignmentOrder { + // JBPNote : this method would return a vector containing all sequences in + // seqset + // with those also contained in order at the beginning of the vector in the + // order + // given by order. AlignmentSorter.vectorSubsetToArray already does this, but + // that method + // should be here for completeness. + + /* + * public Vector getOrder(AlignmentI seqset) { Vector perm = new + * Vector(seqset.getHeight()); for (i=0, o = 0, n=seqset.getHeight(), p = + * Order.size(); i -1) + { + Order.setElementAt(newref, found); + } + return found > -1; } - */ - public static final int FILE = 0; - public static final int MSA = 1; - public static final int USER = 2; - - private int Type = 0; - private String Name; - private Vector Order = null; /** - * AlignmentOrder - * - * @param anOrder Vector + * Exact equivalence of two AlignmentOrders + * + * @param o + * @return true if o orders the same sequenceI objects in the same way */ - public AlignmentOrder(Vector anOrder) + public boolean equals(AlignmentOrder o) { - Order = anOrder; + return equals(o, true); } /** - * AlignmentOrder - * - * @param orderFrom AlignmentI + * Exact equivalence of two AlignmentOrders // TODO: Weak SequenceI + * equivalence - will throw Error at moment + * + * @param o + * @param identity + * - false - use weak equivalence (refers to same or different parts + * of same sequence) + * @return true if o orders equivalent sequenceI objects in the same way */ - public AlignmentOrder(AlignmentI orderFrom) + public boolean equals(AlignmentOrder o, boolean identity) { - Order = new Vector(); - - for (int i=0,ns=orderFrom.getHeight(); i Order.size()) + { + c = o.Order; + s = Order; + } + else + { + c = Order; + s = o.Order; + } + if (!identity) + { + throw new Error("Weak sequenceI equivalence not yet implemented."); + } + else + { + // test if c contains s and order in s is conserved in c + int last = -1; + for (int i = 0, j = s.size(); i < j; i++) + { + int pos = c.indexOf(s.elementAt(i)); // JBPNote - optimize by + // incremental position search + if (pos > last) + { + last = pos; + } + else + { + return false; + } + } + } + } + else + { + return false; + } + } + return true; + } + /** + * AlignmentOrder + * + * @param orderThis + * AlignmentI + * @param byThat + * AlignmentI + */ + /* + * public AlignmentOrder(AlignmentI orderThis, AlignmentI byThat) { // Vector + * is an ordering of this alignment using the order of sequence objects in + * byThat, // where ids and unaligned sequences must match } + */ }