JAL-1213 normalise sequence extracted from Jmol in same way as MCview
authorJim Procter <jprocter@dundee.ac.uk>
Tue, 4 Nov 2014 08:19:19 +0000 (08:19 +0000)
committerJim Procter <jprocter@dundee.ac.uk>
Tue, 4 Nov 2014 08:19:19 +0000 (08:19 +0000)
src/jalview/ext/jmol/PDBFileWithJmol.java

index 159955a..9fa6bf4 100644 (file)
@@ -27,6 +27,7 @@ import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 import jalview.io.AlignFile;
 import jalview.io.FileParse;
+import jalview.schemes.ResidueProperties;
 import jalview.util.MessageManager;
 
 import java.io.IOException;
@@ -153,11 +154,17 @@ public class PDBFileWithJmol extends AlignFile implements
               {
                 if (len > 0)
                 {
+                  boolean isNa = (biopoly.isDna() || biopoly.isRna());
+                  // normalise sequence from Jmol to jalview 
+                  int[] cinds = isNa ? ResidueProperties.nucleotideIndex : ResidueProperties.aaIndex;
+                  int nonGap = isNa ? ResidueProperties.maxNucleotideIndex
+                          : ResidueProperties.maxProteinIndex;
+                  char ngc = 'X';
                   char newseq[] = new char[len];
-                  System.arraycopy(seq, 0, newseq, 0, len);
                   Annotation asecstr[] = new Annotation[len+firstrnum-1];
                   for (int p = 0; p < len; p++)
                   {
+                    newseq[p] = cinds[seq[p]] == nonGap ? ngc : seq[p];
                     if (secstr[p] >= 'A' && secstr[p] <= 'z')
                     {
                       asecstr[p] = new Annotation("" + secstr[p], null,
@@ -177,7 +184,7 @@ public class PDBFileWithJmol extends AlignFile implements
                   // Need to put the number of models for this polymer somewhere for Chimera/others to grab
                   //                  pdbe.getProperty().put("PDBMODELS", biopoly.)
                   seqs.add(sq);
-                  if (!(biopoly.isDna() || biopoly.isRna()))
+                  if (!isNa)
                   {
                     AlignmentAnnotation ann = new AlignmentAnnotation(
                             "Secondary Structure",