Merge branch 'develop' into features/JAL-2110_crossRefDuplications
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Wed, 29 Jun 2016 10:36:16 +0000 (11:36 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Wed, 29 Jun 2016 10:36:16 +0000 (11:36 +0100)
1  2 
src/jalview/gui/Jalview2XML.java

@@@ -680,9 -680,8 +680,8 @@@ public class Jalview2XM
      Set<String> calcIdSet = new HashSet<String>();
  
      // SAVE SEQUENCES
-     for (int i = 0; i < rjal.getHeight(); i++)
+     for (final SequenceI jds : rjal.getSequences())
      {
-       final SequenceI jds = rjal.getSequenceAt(i);
        final SequenceI jdatasq = jds.getDatasetSequence() == null ? jds
                : jds.getDatasetSequence();
        String id = seqHash(jds);
            jseq.setHidden(av.getAlignment().getHiddenSequences()
                    .isHidden(jds));
  
-           if (av.isHiddenRepSequence(rjal.getSequenceAt(i)))
+           if (av.isHiddenRepSequence(jds))
            {
              jalview.datamodel.SequenceI[] reps = av
-                     .getRepresentedSequences(rjal.getSequenceAt(i))
+                     .getRepresentedSequences(jds)
                      .getSequencesInOrder(rjal);
  
              for (int h = 0; h < reps.length; h++)
              {
-               if (reps[h] != rjal.getSequenceAt(i))
+               if (reps[h] != jds)
                {
                  jseq.addHiddenSequences(rjal.findIndex(reps[h]));
                }
          // mark sequence as reference - if it is the reference for this view
          if (jal.hasSeqrep())
          {
-           jseq.setViewreference(rjal.getSequenceAt(i) == jal.getSeqrep());
+           jseq.setViewreference(jds == jal.getSeqrep());
          }
        }
  
      SequenceI[] orderedSeqs = tmpseqs
              .toArray(new SequenceI[tmpseqs.size()]);
  
 -    Alignment al = new Alignment(orderedSeqs);
 +    AlignmentI al = new Alignment(orderedSeqs);
  
      if (referenceseqForView != null)
      {
    }
  
    AlignFrame loadViewport(String file, JSeq[] JSEQ,
 -          List<SequenceI> hiddenSeqs, Alignment al,
 +          List<SequenceI> hiddenSeqs, AlignmentI al,
            JalviewModelSequence jms, Viewport view, String uniqueSeqSetId,
            String viewId, List<JvAnnotRow> autoAlan)
    {
      {
        for (int s = 0; s < JSEQ.length; s++)
        {
-         jalview.datamodel.SequenceGroup hidden = new jalview.datamodel.SequenceGroup();
+         SequenceGroup hidden = new SequenceGroup();
+         boolean isRepresentative = false;
          for (int r = 0; r < JSEQ[s].getHiddenSequencesCount(); r++)
          {
-           hidden.addSequence(
-                   al.getSequenceAt(JSEQ[s].getHiddenSequences(r)), false);
+           isRepresentative = true;
+           SequenceI sequenceToHide = al.getSequenceAt(JSEQ[s]
+                   .getHiddenSequences(r));
+           hidden.addSequence(sequenceToHide, false);
+           // remove from hiddenSeqs list so we don't try to hide it twice
+           hiddenSeqs.remove(sequenceToHide);
+         }
+         if (isRepresentative)
+         {
+           SequenceI representativeSequence = al.getSequenceAt(s);
+           hidden.addSequence(representativeSequence, false);
+           af.viewport.hideRepSequences(representativeSequence, hidden);
          }
-         af.viewport.hideRepSequences(al.getSequenceAt(s), hidden);
        }
  
-       // jalview.datamodel.SequenceI[] hseqs = new
-       // jalview.datamodel.SequenceI[hiddenSeqs
-       // .size()];
-       //
-       // for (int s = 0; s < hiddenSeqs.size(); s++)
-       // {
-       // hseqs[s] = (jalview.datamodel.SequenceI) hiddenSeqs.elementAt(s);
-       // }
        SequenceI[] hseqs = hiddenSeqs.toArray(new SequenceI[hiddenSeqs
                .size()]);
        af.viewport.hideSequence(hseqs);
    }
  
    private ColourSchemeI constructAnnotationColour(
 -          AnnotationColours viewAnnColour, AlignFrame af, Alignment al,
 +          AnnotationColours viewAnnColour, AlignFrame af, AlignmentI al,
            JalviewModelSequence jms, boolean checkGroupAnnColour)
    {
      boolean propagateAnnColour = false;
      return cs;
    }
  
 -  private void reorderAutoannotation(AlignFrame af, Alignment al,
 +  private void reorderAutoannotation(AlignFrame af, AlignmentI al,
            List<JvAnnotRow> autoAlan)
    {
      // copy over visualization settings for autocalculated annotation in the
      }
    }
  
 -  private void recoverDatasetFor(SequenceSet vamsasSet, Alignment al,
 +  private void recoverDatasetFor(SequenceSet vamsasSet, AlignmentI al,
            boolean ignoreUnrefed)
    {
 -    jalview.datamodel.Alignment ds = getDatasetFor(vamsasSet.getDatasetId());
 +    jalview.datamodel.AlignmentI ds = getDatasetFor(vamsasSet
 +            .getDatasetId());
      Vector dseqs = null;
      if (ds == null)
      {
     * TODO use AlignmentI here and in related methods - needs
     * AlignmentI.getDataset() changed to return AlignmentI instead of Alignment
     */
 -  Hashtable<String, Alignment> datasetIds = null;
 +  Hashtable<String, AlignmentI> datasetIds = null;
  
 -  IdentityHashMap<Alignment, String> dataset2Ids = null;
 +  IdentityHashMap<AlignmentI, String> dataset2Ids = null;
  
 -  private Alignment getDatasetFor(String datasetId)
 +  private AlignmentI getDatasetFor(String datasetId)
    {
      if (datasetIds == null)
      {
 -      datasetIds = new Hashtable<String, Alignment>();
 +      datasetIds = new Hashtable<String, AlignmentI>();
        return null;
      }
      if (datasetIds.containsKey(datasetId))
      return null;
    }
  
 -  private void addDatasetRef(String datasetId, Alignment dataset)
 +  private void addDatasetRef(String datasetId, AlignmentI dataset)
    {
      if (datasetIds == null)
      {
 -      datasetIds = new Hashtable<String, Alignment>();
 +      datasetIds = new Hashtable<String, AlignmentI>();
      }
      datasetIds.put(datasetId, dataset);
    }
     * @param dataset
     * @return
     */
 -  private String getDatasetIdRef(Alignment dataset)
 +  private String getDatasetIdRef(AlignmentI dataset)
    {
      if (dataset.getDataset() != null)
      {
        // make a new datasetId and record it
        if (dataset2Ids == null)
        {
 -        dataset2Ids = new IdentityHashMap<Alignment, String>();
 +        dataset2Ids = new IdentityHashMap<AlignmentI, String>();
        }
        else
        {