From 91ead9523ffe122db1a9386b3c9cffabcf3f6ba3 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Tue, 4 Nov 2014 08:19:19 +0000 Subject: [PATCH] JAL-1213 normalise sequence extracted from Jmol in same way as MCview --- src/jalview/ext/jmol/PDBFileWithJmol.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/jalview/ext/jmol/PDBFileWithJmol.java b/src/jalview/ext/jmol/PDBFileWithJmol.java index 159955a..9fa6bf4 100644 --- a/src/jalview/ext/jmol/PDBFileWithJmol.java +++ b/src/jalview/ext/jmol/PDBFileWithJmol.java @@ -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", -- 1.7.10.2