X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=7b97d491d2a97d5b85f9c0cdfd0d12ee41cd4151;hb=a30b21bb66cb7faef19bd1c2417be687970babcf;hp=1956df7f10be8f6664575bbf5d92b8f94ca124c0;hpb=97761a98a97b49dcdf65e574aeff21f62f8a70b7;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index 1956df7..7b97d49 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -42,13 +42,13 @@ import java.util.Vector; /** * Data structure to hold and manipulate a multiple sequence alignment - */ -/** - * @author JimP * + * @author JimP */ public class Alignment implements AlignmentI { + private static final SequenceGroup[] NO_GROUPS = new SequenceGroup[0]; + private Alignment dataset; private List sequences; @@ -59,6 +59,13 @@ public class Alignment implements AlignmentI private boolean nucleotide = true; + private List codonFrameList; + + /* + * persistent object to hold result of findAllGroups(SequenceI) + */ + private List groupsForSequence = new ArrayList<>(); + public boolean hasRNAStructure = false; public AlignmentAnnotation[] annotations; @@ -69,8 +76,6 @@ public class Alignment implements AlignmentI public Hashtable alignmentProperties; - private List codonFrameList; - private void initAlignment(SequenceI[] seqs) { groups = Collections.synchronizedList(new ArrayList()); @@ -125,8 +130,7 @@ public class Alignment implements AlignmentI /** * Make a new alignment from an array of SeqCigars * - * @param seqs - * SeqCigar[] + * @param alseqs */ public Alignment(SeqCigar[] alseqs) { @@ -408,11 +412,14 @@ public class Alignment implements AlignmentI @Override public SequenceGroup[] findAllGroups(SequenceI s) { - ArrayList temp = new ArrayList<>(); - synchronized (groups) { int gSize = groups.size(); + if (gSize == 0) + { + return NO_GROUPS; + } + groupsForSequence.clear(); for (int i = 0; i < gSize; i++) { SequenceGroup sg = groups.get(i); @@ -425,12 +432,12 @@ public class Alignment implements AlignmentI if (sg.getSequences().contains(s)) { - temp.add(sg); + groupsForSequence.add(sg); } } } - SequenceGroup[] ret = new SequenceGroup[temp.size()]; - return temp.toArray(ret); + SequenceGroup[] ret = new SequenceGroup[groupsForSequence.size()]; + return groupsForSequence.toArray(ret); } /** */