Merge branch 'feature/JAL-3141_backupfiles_for211' into develop merge/develop_feature/JAL-3141_backupfiles_for211
authorJim Procter <jprocter@issues.jalview.org>
Thu, 28 Feb 2019 13:46:48 +0000 (13:46 +0000)
committerJim Procter <jprocter@issues.jalview.org>
Thu, 28 Feb 2019 13:46:48 +0000 (13:46 +0000)
16 files changed:
src/jalview/datamodel/SequenceGroup.java
src/jalview/ext/ensembl/EnsemblRestClient.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/IdPanel.java
src/jalview/gui/OverviewPanel.java
src/jalview/gui/ScalePanel.java
src/jalview/gui/SeqPanel.java
src/jalview/io/vcf/VCFLoader.java
src/jalview/project/Jalview2XML.java
src/jalview/schemes/ResidueProperties.java
src/jalview/viewmodel/AlignmentViewport.java
test/jalview/datamodel/SequenceGroupTest.java
test/jalview/gui/AlignViewportTest.java
test/jalview/io/vcf/VCFLoaderTest.java
test/jalview/schemes/ResiduePropertiesTest.java

index fc8ac49..3bf7bc4 100755 (executable)
@@ -88,7 +88,7 @@ public class SequenceGroup implements AnnotatedCollectionI
   /**
    * group members
    */
-  private List<SequenceI> sequences = new ArrayList<>();
+  private List<SequenceI> sequences;
 
   /**
    * representative sequence for this group (if any)
@@ -162,6 +162,7 @@ public class SequenceGroup implements AnnotatedCollectionI
   {
     groupName = "JGroup:" + this.hashCode();
     cs = new ResidueShader();
+    sequences = new ArrayList<>();
   }
 
   /**
@@ -243,6 +244,17 @@ public class SequenceGroup implements AnnotatedCollectionI
     }
   }
 
+  /**
+   * Constructor that copies the given list of sequences
+   * 
+   * @param seqs
+   */
+  public SequenceGroup(List<SequenceI> seqs)
+  {
+    this();
+    this.sequences.addAll(seqs);
+  }
+
   public boolean isShowSequenceLogo()
   {
     return showSequenceLogo;
index 9e01cc4..e64c51a 100644 (file)
@@ -60,13 +60,13 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher
 
   /*
    * update these constants when Jalview has been checked / updated for
-   * changes to Ensembl REST API (ref JAL-2105)
+   * changes to Ensembl REST API, and updated JAL-3018
    * @see https://github.com/Ensembl/ensembl-rest/wiki/Change-log
    * @see http://rest.ensembl.org/info/rest?content-type=application/json
    */
-  private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "7.0";
+  private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "9.0";
 
-  private static final String LATEST_ENSEMBL_REST_VERSION = "7.0";
+  private static final String LATEST_ENSEMBL_REST_VERSION = "9.0";
 
   private static final String REST_CHANGE_LOG = "https://github.com/Ensembl/ensembl-rest/wiki/Change-log";
 
index bf9569b..36db248 100644 (file)
@@ -2408,12 +2408,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   public void selectAllSequenceMenuItem_actionPerformed(ActionEvent e)
   {
-    SequenceGroup sg = new SequenceGroup();
-
-    for (int i = 0; i < viewport.getAlignment().getSequences().size(); i++)
-    {
-      sg.addSequence(viewport.getAlignment().getSequenceAt(i), false);
-    }
+    SequenceGroup sg = new SequenceGroup(
+            viewport.getAlignment().getSequences());
 
     sg.setEndRes(viewport.getAlignment().getWidth() - 1);
     viewport.setSelectionGroup(sg);
@@ -2900,7 +2896,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.setFollowHighlight(state);
     if (state)
     {
-      alignPanel.scrollToPosition(viewport.getSearchResults(), false);
+      alignPanel.scrollToPosition(viewport.getSearchResults());
     }
   }
 
index c03b56d..82e2113 100644 (file)
@@ -328,12 +328,12 @@ public class AlignmentPanel extends GAlignmentPanel implements
   }
 
   /**
-   * Highlight the given results on the alignment.
+   * Highlight the given results on the alignment
    * 
    */
   public void highlightSearchResults(SearchResultsI results)
   {
-    boolean scrolled = scrollToPosition(results, 0, true, false);
+    boolean scrolled = scrollToPosition(results, 0, false);
 
     boolean noFastPaint = scrolled && av.getWrapAlignment();
 
@@ -345,13 +345,11 @@ public class AlignmentPanel extends GAlignmentPanel implements
    * (if any)
    * 
    * @param searchResults
-   * @param redrawOverview
    * @return
    */
-  public boolean scrollToPosition(SearchResultsI searchResults,
-          boolean redrawOverview)
+  public boolean scrollToPosition(SearchResultsI searchResults)
   {
-    return scrollToPosition(searchResults, 0, redrawOverview, false);
+    return scrollToPosition(searchResults, 0, false);
   }
 
   /**
@@ -364,14 +362,12 @@ public class AlignmentPanel extends GAlignmentPanel implements
    * @param verticalOffset
    *          if greater than zero, allows scrolling to a position below the
    *          first displayed sequence
-   * @param redrawOverview
-   *          - when set, the overview will be recalculated (takes longer)
    * @param centre
    *          if true, try to centre the search results horizontally in the view
    * @return
    */
   protected boolean scrollToPosition(SearchResultsI results,
-          int verticalOffset, boolean redrawOverview, boolean centre)
+          int verticalOffset, boolean centre)
   {
     int startv, endv, starts, ends;
     ViewportRanges ranges = av.getRanges();
@@ -477,7 +473,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       scrollNeeded = ranges.scrollToWrappedVisible(start);
     }
 
-    paintAlignment(redrawOverview, false);
+    paintAlignment(false, false);
 
     return scrollNeeded;
   }
@@ -1698,7 +1694,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
    */
   protected void scrollToCentre(SearchResultsI sr, int verticalOffset)
   {
-    scrollToPosition(sr, verticalOffset, true, true);
+    scrollToPosition(sr, verticalOffset, true);
   }
 
   /**
index a183144..34bda10 100755 (executable)
@@ -358,7 +358,7 @@ public class IdPanel extends JPanel
     lastid = seq;
 
     SequenceI pickedSeq = av.getAlignment().getSequenceAt(seq);
-    av.getSelectionGroup().addOrRemove(pickedSeq, true);
+    av.getSelectionGroup().addOrRemove(pickedSeq, false);
   }
 
   /**
@@ -393,7 +393,7 @@ public class IdPanel extends JPanel
     for (int i = start; i <= end; i++)
     {
       av.getSelectionGroup().addSequence(av.getAlignment().getSequenceAt(i),
-              i == end);
+              false);
     }
   }
 
index 02d54a8..a73a06a 100755 (executable)
@@ -86,7 +86,7 @@ public class OverviewPanel extends JPanel
     this.ap = alPanel;
 
     showHidden = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
-            true);
+            false);
     if (showHidden)
     {
       od = new OverviewDimensionsShowHidden(av.getRanges(),
index 6abee08..5821b61 100755 (executable)
@@ -23,7 +23,6 @@ package jalview.gui;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
 import jalview.renderer.ScaleRenderer;
 import jalview.renderer.ScaleRenderer.ScaleMark;
 import jalview.util.MessageManager;
@@ -237,15 +236,7 @@ public class ScalePanel extends JPanel
     }
 
     av.getColumnSelection().addElement(res);
-    SequenceGroup sg = new SequenceGroup();
-    // try to be as quick as possible
-    SequenceI[] iVec = av.getAlignment().getSequencesArray();
-    for (int i = 0; i < iVec.length; i++)
-    {
-      sg.addSequence(iVec[i], false);
-      iVec[i] = null;
-    }
-    iVec = null;
+    SequenceGroup sg = new SequenceGroup(av.getAlignment().getSequences());
     sg.setStartRes(res);
     sg.setEndRes(res);
 
index 8b2e7bc..ec02bb1 100644 (file)
@@ -731,7 +731,7 @@ public class SeqPanel extends JPanel
       // over residue to change abruptly, causing highlighted residue in panel 2
       // to change, causing a scroll in panel 1 etc)
       ap.setToScrollComplementPanel(false);
-      wasScrolled = ap.scrollToPosition(results, false);
+      wasScrolled = ap.scrollToPosition(results);
       if (wasScrolled)
       {
         seqCanvas.revalidate();
@@ -1872,8 +1872,11 @@ public class SeqPanel extends JPanel
             && afterDrag;
     if (stretchGroup.cs != null)
     {
-      stretchGroup.cs.alignmentChanged(stretchGroup,
-              av.getHiddenRepSequences());
+      if (afterDrag)
+      {
+        stretchGroup.cs.alignmentChanged(stretchGroup,
+                av.getHiddenRepSequences());
+      }
 
       ResidueShaderI groupColourScheme = stretchGroup
               .getGroupColourScheme();
index de2f18a..5ba5d93 100644 (file)
@@ -835,33 +835,6 @@ public class VCFLoader
   }
 
   /**
-   * A convenience method to get the AF value for the given alternate allele
-   * index
-   * 
-   * @param variant
-   * @param alleleIndex
-   * @return
-   */
-  protected float getAlleleFrequency(VariantContext variant, int alleleIndex)
-  {
-    float score = 0f;
-    String attributeValue = getAttributeValue(variant,
-            ALLELE_FREQUENCY_KEY, alleleIndex);
-    if (attributeValue != null)
-    {
-      try
-      {
-        score = Float.parseFloat(attributeValue);
-      } catch (NumberFormatException e)
-      {
-        // leave as 0
-      }
-    }
-
-    return score;
-  }
-
-  /**
    * A convenience method to get an attribute value for an alternate allele
    * 
    * @param variant
@@ -981,10 +954,8 @@ public class VCFLoader
       type = getOntologyTerm(consequence);
     }
 
-    float score = getAlleleFrequency(variant, altAlleleIndex);
-
     SequenceFeature sf = new SequenceFeature(type, alleles, featureStart,
-            featureEnd, score, FEATURE_GROUP_VCF);
+            featureEnd, FEATURE_GROUP_VCF);
     sf.setSource(sourceId);
 
     sf.setValue(Gff3Helper.ALLELES, alleles);
index 7b23c8d..f772cf5 100644 (file)
@@ -5835,15 +5835,16 @@ public class Jalview2XML
     jalview.datamodel.Mapping jmap = new jalview.datamodel.Mapping(dsto, fr,
             fto, m.getMapFromUnit().intValue(),
             m.getMapToUnit().intValue());
-    // if (m.getMappingChoice() != null)
-    // {
-    // MappingChoice mc = m.getMappingChoice();
+
+    /*
+     * (optional) choice of dseqFor or Sequence
+     */
     if (m.getDseqFor() != null)
     {
       String dsfor = m.getDseqFor();
       if (seqRefIds.containsKey(dsfor))
       {
-        /**
+        /*
          * recover from hash
          */
         jmap.setTo(seqRefIds.get(dsfor));
@@ -5853,9 +5854,9 @@ public class Jalview2XML
         frefedSequence.add(newMappingRef(dsfor, jmap));
       }
     }
-    else
+    else if (m.getSequence() != null)
     {
-      /**
+      /*
        * local sequence definition
        */
       Sequence ms = m.getSequence();
index a4e6480..18b11c1 100755 (executable)
@@ -1156,47 +1156,51 @@ public class ResidueProperties
     return cdn;
   }
 
-  public static Hashtable<String, String> toDssp3State;
+  /*
+   * lookup of (A-Z) alternative secondary structure symbols'
+   * equivalents in DSSP3 notation
+   */
+  private static char[] toDssp3State;
   static
   {
-    toDssp3State = new Hashtable<>();
-    toDssp3State.put("H", "H");
-    toDssp3State.put("E", "E");
-    toDssp3State.put("C", " ");
-    toDssp3State.put(" ", " ");
-    toDssp3State.put("T", " ");
-    toDssp3State.put("B", "E");
-    toDssp3State.put("G", "H");
-    toDssp3State.put("I", "H");
-    toDssp3State.put("X", " ");
+    toDssp3State = new char[9]; // for 'A'-'I'; extend if needed
+    Arrays.fill(toDssp3State, ' ');
+    toDssp3State['B' - 'A'] = 'E';
+    toDssp3State['E' - 'A'] = 'E';
+    toDssp3State['G' - 'A'] = 'H';
+    toDssp3State['H' - 'A'] = 'H';
+    toDssp3State['I' - 'A'] = 'H';
   }
 
   /**
    * translate from other dssp secondary structure alphabets to 3-state
    * 
-   * @param ssstring
-   * @return ssstring as a three-state secondary structure assignment.
+   * @param ssString
+   * @return ssstring
    */
-  public static String getDssp3state(String ssstring)
+  public static String getDssp3state(String ssString)
   {
-    if (ssstring == null)
+    if (ssString == null)
     {
       return null;
     }
-    StringBuffer ss = new StringBuffer();
-    for (int i = 0; i < ssstring.length(); i++)
+    int lookupSize = toDssp3State.length;
+    int len = ssString.length();
+    char[] trans = new char[len];
+    for (int i = 0; i < len; i++)
     {
-      String ssc = ssstring.substring(i, i + 1);
-      if (toDssp3State.containsKey(ssc))
+      char c = ssString.charAt(i);
+      int index = c - 'A';
+      if (index < 0 || index >= lookupSize)
       {
-        ss.append(toDssp3State.get(ssc));
+        trans[i] = ' ';
       }
       else
       {
-        ss.append(" ");
+        trans[i] = toDssp3State[index];
       }
     }
-    return ss.toString();
+    return new String(trans);
   }
 
   static
index 1366ada..ca32ee7 100644 (file)
@@ -662,7 +662,7 @@ public abstract class AlignmentViewport
          * retain any colour thresholds per group while
          * changing choice of colour scheme (JAL-2386)
          */
-        sg.setColourScheme(cs);
+        sg.setColourScheme(cs.getInstance(sg, hiddenRepSequences));
         if (cs != null)
         {
           sg.getGroupColourScheme().alignmentChanged(sg,
index b0af5c8..8419d4c 100644 (file)
@@ -14,12 +14,14 @@ import jalview.schemes.NucleotideColourScheme;
 import jalview.schemes.PIDColourScheme;
 
 import java.awt.Color;
+import java.util.ArrayList;
 import java.util.Collections;
-
-import junit.extensions.PA;
+import java.util.List;
 
 import org.testng.annotations.Test;
 
+import junit.extensions.PA;
+
 public class SequenceGroupTest
 {
   @Test(groups={"Functional"})
@@ -301,4 +303,36 @@ public class SequenceGroupTest
      */
     assertNull(sg2.getContext());
   }
+
+  @Test(groups = { "Functional" })
+  public void testConstructor_list()
+  {
+    SequenceI s1 = new Sequence("abcde", "fg");
+    SequenceI s2 = new Sequence("foo", "bar");
+    List<SequenceI> seqs = new ArrayList<SequenceI>();
+    seqs.add(s1);
+    seqs.add(s2);
+    SequenceGroup sg = new SequenceGroup(seqs);
+
+    /*
+     * verify sg has a copy of the original list
+     */
+    List<SequenceI> sgList = sg.getSequences();
+    assertNotSame(sgList, seqs);
+    assertEquals(sgList, seqs);
+
+    /*
+     * add to sgList, original is unchanged
+     */
+    sg.addSequence(new Sequence("bar", "foo"), false);
+    assertEquals(sgList.size(), 3);
+    assertEquals(seqs.size(), 2);
+
+    /*
+     * delete from original, sgList is unchanged
+     */
+    seqs.remove(s1);
+    assertEquals(sgList.size(), 3);
+    assertEquals(seqs.size(), 1);
+  }
 }
index 7801250..959abb0 100644 (file)
@@ -23,6 +23,7 @@ package jalview.gui;
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertNotSame;
 import static org.testng.AssertJUnit.assertSame;
 import static org.testng.AssertJUnit.assertTrue;
 
@@ -33,8 +34,6 @@ import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.PDBEntry.Type;
 import jalview.datamodel.SearchResults;
 import jalview.datamodel.SearchResultsI;
 import jalview.datamodel.Sequence;
@@ -42,6 +41,7 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.io.DataSourceType;
 import jalview.io.FileLoader;
+import jalview.schemes.ClustalxColourScheme;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.PIDColourScheme;
 import jalview.structure.StructureSelectionManager;
@@ -333,9 +333,34 @@ public class AlignViewportTest
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "examples/uniref50.fa", DataSourceType.FILE);
     ColourSchemeI cs = new PIDColourScheme();
-    af.getViewport().setGlobalColourScheme(cs);
-    assertFalse(af.getViewport().getResidueShading()
+    AlignViewport viewport = af.getViewport();
+    viewport.setGlobalColourScheme(cs);
+    assertFalse(viewport.getResidueShading()
             .conservationApplied());
+
+    /*
+     * JAL-3201 groups have their own ColourSchemeI instances
+     */
+    AlignmentI aln = viewport.getAlignment();
+    SequenceGroup sg1 = new SequenceGroup();
+    sg1.addSequence(aln.getSequenceAt(0), false);
+    sg1.addSequence(aln.getSequenceAt(2), false);
+    SequenceGroup sg2 = new SequenceGroup();
+    sg2.addSequence(aln.getSequenceAt(1), false);
+    sg2.addSequence(aln.getSequenceAt(3), false);
+    aln.addGroup(sg1);
+    aln.addGroup(sg2);
+    viewport.setColourAppliesToAllGroups(true);
+    viewport.setGlobalColourScheme(new ClustalxColourScheme());
+    ColourSchemeI cs0 = viewport.getGlobalColourScheme();
+    ColourSchemeI cs1 = sg1.getColourScheme();
+    ColourSchemeI cs2 = sg2.getColourScheme();
+    assertTrue(cs0 instanceof ClustalxColourScheme);
+    assertTrue(cs1 instanceof ClustalxColourScheme);
+    assertTrue(cs2 instanceof ClustalxColourScheme);
+    assertNotSame(cs0, cs1);
+    assertNotSame(cs0, cs2);
+    assertNotSame(cs1, cs2);
   }
 
   @Test(groups = { "Functional" })
index 7e3c0b4..58c73dd 100644 (file)
@@ -103,7 +103,9 @@ public class VCFLoaderTest
     assertEquals(sf.getFeatureGroup(), "VCF");
     assertEquals(sf.getBegin(), 2);
     assertEquals(sf.getEnd(), 2);
-    assertEquals(sf.getScore(), 4.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 4.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "A,C");
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
     sf = geneFeatures.get(1);
@@ -111,7 +113,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 2);
     assertEquals(sf.getEnd(), 2);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 5.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 5.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "A,T");
 
     sf = geneFeatures.get(2);
@@ -119,7 +123,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 4);
     assertEquals(sf.getEnd(), 4);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 2.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 2.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,C");
 
     sf = geneFeatures.get(3);
@@ -127,7 +133,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 4);
     assertEquals(sf.getEnd(), 4);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 3.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 3.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,GA");
 
     /*
@@ -141,14 +149,18 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 2);
     assertEquals(sf.getEnd(), 2);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 2.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 2.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,C");
     sf = transcriptFeatures.get(1);
     assertEquals(sf.getFeatureGroup(), "VCF");
     assertEquals(sf.getBegin(), 2);
     assertEquals(sf.getEnd(), 2);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 3.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 3.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,GA");
 
     /*
@@ -337,7 +349,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 24);
     assertEquals(sf.getEnd(), 24);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 5.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 5.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "T,A");
 
     /*
@@ -348,7 +362,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 24);
     assertEquals(sf.getEnd(), 24);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 4.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 4.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "T,G");
 
     /*
@@ -359,7 +375,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 22);
     assertEquals(sf.getEnd(), 22);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 2.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 2.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "C,G");
 
     /*
@@ -374,7 +392,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 21);
     assertEquals(sf.getEnd(), 21);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 3.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 3.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,GT");
 
     /*
@@ -392,7 +412,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 16);
     assertEquals(sf.getEnd(), 16);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 3.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 3.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,GT");
 
     /*
@@ -403,7 +425,9 @@ public class VCFLoaderTest
     assertEquals(sf.getBegin(), 17);
     assertEquals(sf.getEnd(), 17);
     assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
-    assertEquals(sf.getScore(), 2.0e-03, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 2.0e-03,
+            DELTA);
     assertEquals(sf.getValue(Gff3Helper.ALLELES), "C,G");
 
     /*
@@ -463,7 +487,8 @@ public class VCFLoaderTest
     SequenceFeature sf = geneFeatures.get(0);
     assertEquals(sf.getBegin(), 1);
     assertEquals(sf.getEnd(), 1);
-    assertEquals(sf.getScore(), 0.1f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.1f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,A");
     // gene features include Consequence for all transcripts
     Map map = (Map) sf.getValue("CSQ");
@@ -472,7 +497,8 @@ public class VCFLoaderTest
     sf = geneFeatures.get(1);
     assertEquals(sf.getBegin(), 5);
     assertEquals(sf.getEnd(), 5);
-    assertEquals(sf.getScore(), 0.2f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.2f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,T");
     map = (Map) sf.getValue("CSQ");
     assertEquals(map.size(), 9);
@@ -480,7 +506,8 @@ public class VCFLoaderTest
     sf = geneFeatures.get(2);
     assertEquals(sf.getBegin(), 9);
     assertEquals(sf.getEnd(), 11); // deletion over 3 positions
-    assertEquals(sf.getScore(), 0.3f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.3f, DELTA);
     assertEquals(sf.getValue("alleles"), "CGG,C");
     map = (Map) sf.getValue("CSQ");
     assertEquals(map.size(), 9);
@@ -488,7 +515,8 @@ public class VCFLoaderTest
     sf = geneFeatures.get(3);
     assertEquals(sf.getBegin(), 13);
     assertEquals(sf.getEnd(), 13);
-    assertEquals(sf.getScore(), 0.5f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.5f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,T");
     map = (Map) sf.getValue("CSQ");
     assertEquals(map.size(), 9);
@@ -496,7 +524,8 @@ public class VCFLoaderTest
     sf = geneFeatures.get(4);
     assertEquals(sf.getBegin(), 13);
     assertEquals(sf.getEnd(), 13);
-    assertEquals(sf.getScore(), 0.4f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.4f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,G");
     map = (Map) sf.getValue("CSQ");
     assertEquals(map.size(), 9);
@@ -504,7 +533,8 @@ public class VCFLoaderTest
     sf = geneFeatures.get(5);
     assertEquals(sf.getBegin(), 17);
     assertEquals(sf.getEnd(), 17);
-    assertEquals(sf.getScore(), 0.7f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.7f, DELTA);
     assertEquals(sf.getValue("alleles"), "A,G");
     map = (Map) sf.getValue("CSQ");
     assertEquals(map.size(), 9);
@@ -512,7 +542,8 @@ public class VCFLoaderTest
     sf = geneFeatures.get(6);
     assertEquals(sf.getBegin(), 17);
     assertEquals(sf.getEnd(), 17); // insertion
-    assertEquals(sf.getScore(), 0.6f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.6f, DELTA);
     assertEquals(sf.getValue("alleles"), "A,AC");
     map = (Map) sf.getValue("CSQ");
     assertEquals(map.size(), 9);
@@ -530,7 +561,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(0);
     assertEquals(sf.getBegin(), 3);
     assertEquals(sf.getEnd(), 3);
-    assertEquals(sf.getScore(), 0.2f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.2f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,T");
     // transcript features only have Consequence for that transcripts
     map = (Map) sf.getValue("CSQ");
@@ -540,7 +572,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(1);
     assertEquals(sf.getBegin(), 11);
     assertEquals(sf.getEnd(), 11);
-    assertEquals(sf.getScore(), 0.7f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.7f, DELTA);
     assertEquals(sf.getValue("alleles"), "A,G");
     assertEquals(map.size(), 9);
     assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript3");
@@ -548,7 +581,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(2);
     assertEquals(sf.getBegin(), 11);
     assertEquals(sf.getEnd(), 11);
-    assertEquals(sf.getScore(), 0.6f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.6f, DELTA);
     assertEquals(sf.getValue("alleles"), "A,AC");
     assertEquals(map.size(), 9);
     assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript3");
@@ -595,7 +629,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(0);
     assertEquals(sf.getBegin(), 7);
     assertEquals(sf.getEnd(), 7);
-    assertEquals(sf.getScore(), 0.5f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.5f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,T");
     assertEquals(map.size(), 9);
     assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4");
@@ -603,7 +638,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(1);
     assertEquals(sf.getBegin(), 7);
     assertEquals(sf.getEnd(), 7);
-    assertEquals(sf.getScore(), 0.4f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.4f, DELTA);
     assertEquals(sf.getValue("alleles"), "C,G");
     assertEquals(map.size(), 9);
     assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4");
@@ -611,7 +647,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(2);
     assertEquals(sf.getBegin(), 11);
     assertEquals(sf.getEnd(), 11);
-    assertEquals(sf.getScore(), 0.7f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.7f, DELTA);
     assertEquals(sf.getValue("alleles"), "A,G");
     assertEquals(map.size(), 9);
     assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4");
@@ -619,7 +656,8 @@ public class VCFLoaderTest
     sf = transcriptFeatures.get(3);
     assertEquals(sf.getBegin(), 11);
     assertEquals(sf.getEnd(), 11);
-    assertEquals(sf.getScore(), 0.6f, DELTA);
+    assertEquals(sf.getScore(), 0f);
+    assertEquals(Float.parseFloat((String) sf.getValue("AF")), 0.6f, DELTA);
     assertEquals(sf.getValue("alleles"), "A,AC");
     assertEquals(map.size(), 9);
     assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4");
index 7fbad50..180deaf 100644 (file)
@@ -1569,6 +1569,16 @@ public class ResiduePropertiesTest
   }
 
   @Test(groups = { "Functional" })
+  public void testGetDssp3State()
+  {
+    assertNull(ResidueProperties.getDssp3state(null));
+    assertEquals("", ResidueProperties.getDssp3state(""));
+    String foo = "0123 []<>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    String bar = "                                    E  E HHH                 ";
+    assertEquals(bar, ResidueProperties.getDssp3state(foo));
+  }
+
+  @Test(groups = { "Functional" })
   public void testPhysicoChemicalProperties()
   {
     checkProperty("aromatic", "FYWH-*");