Merge branch 'develop' into features/JAL-2393customMatrices
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 21 Apr 2017 13:08:13 +0000 (14:08 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 21 Apr 2017 13:08:13 +0000 (14:08 +0100)
1  2 
src/jalview/ws/sifts/SiftsClient.java

@@@ -21,8 -21,6 +21,8 @@@
  package jalview.ws.sifts;
  
  import jalview.analysis.AlignSeq;
 +import jalview.analysis.scoremodels.ScoreMatrix;
 +import jalview.analysis.scoremodels.ScoreModels;
  import jalview.api.DBRefEntryI;
  import jalview.api.SiftsClientI;
  import jalview.datamodel.DBRefEntry;
@@@ -609,8 -607,12 +609,12 @@@ public class SiftsClient implements Sif
                      .getDbResNum());
            } catch (NumberFormatException nfe)
            {
-             resNum = (pdbRefDb == null) ? Integer.valueOf(residue
-                     .getDbResNum()) : Integer.valueOf(pdbRefDb
+             if (pdbRefDb == null || pdbRefDb.getDbResNum().equals("null"))
+             {
+               resNum = UNASSIGNED;
+               continue;
+             }
+             resNum = Integer.valueOf(pdbRefDb
                      .getDbResNum().split("[a-zA-Z]")[0]);
              continue;
            }
    }
  
    @Override
 -  public StringBuffer getMappingOutput(MappingOutputPojo mp)
 +  public StringBuilder getMappingOutput(MappingOutputPojo mp)
            throws SiftsException
    {
      String seqRes = mp.getSeqResidue();
      int nochunks = ((seqRes.length()) / len)
              + ((seqRes.length()) % len > 0 ? 1 : 0);
      // output mappings
 -    StringBuffer output = new StringBuffer();
 +    StringBuilder output = new StringBuilder(512);
      output.append(NEWLINE);
      output.append("Sequence \u27f7 Structure mapping details").append(
              NEWLINE);
      output.append(String.valueOf(pdbEnd));
      output.append(NEWLINE).append(NEWLINE);
  
 +    ScoreMatrix pam250 = ScoreModels.getInstance().getPam250();
      int matchedSeqCount = 0;
      for (int j = 0; j < nochunks; j++)
      {
        output.append(NEWLINE);
        output.append(new Format("%" + (maxid) + "s").form(" ")).append(" ");
  
 -      // Print out the matching chars
 +      /*
 +       * Print out the match symbols:
 +       * | for exact match (ignoring case)
 +       * . if PAM250 score is positive
 +       * else a space
 +       */
        for (int i = 0; i < len; i++)
        {
          try
          {
            if ((i + (j * len)) < seqRes.length())
            {
 -            boolean sameChar = Comparison.isSameResidue(
 -                    seqRes.charAt(i + (j * len)),
 -                    strRes.charAt(i + (j * len)), false);
 -            if (sameChar
 -                    && !jalview.util.Comparison.isGap(seqRes.charAt(i
 -                            + (j * len))))
 +            char c1 = seqRes.charAt(i + (j * len));
 +            char c2 = strRes.charAt(i + (j * len));
 +            boolean sameChar = Comparison.isSameResidue(c1, c2, false);
 +            if (sameChar && !Comparison.isGap(c1))
              {
                matchedSeqCount++;
                output.append("|");
              }
              else if (type.equals("pep"))
              {
 -              if (ResidueProperties.getPAM250(seqRes.charAt(i + (j * len)),
 -                      strRes.charAt(i + (j * len))) > 0)
 +              if (pam250.getPairwiseScore(c1, c2) > 0)
                {
                  output.append(".");
                }