X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FPDBFileWithJmol.java;h=92dce3632f552208517b2ebb873255113e2753a2;hb=2273eba5668e5340354da60fed329c6c716cc439;hp=9672268f685a146836cf1cceca058c91ee7d6936;hpb=8149ee3ab3c19c60463adc13e4212f1f19b19331;p=jalview.git diff --git a/src/jalview/ext/jmol/PDBFileWithJmol.java b/src/jalview/ext/jmol/PDBFileWithJmol.java index 9672268..92dce36 100644 --- a/src/jalview/ext/jmol/PDBFileWithJmol.java +++ b/src/jalview/ext/jmol/PDBFileWithJmol.java @@ -20,6 +20,16 @@ */ package jalview.ext.jmol; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.Annotation; +import jalview.datamodel.PDBEntry; +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; import java.util.Hashtable; import java.util.Map; @@ -35,14 +45,6 @@ import org.jmol.modelsetbio.BioPolymer; import org.jmol.viewer.Viewer; import org.openscience.jmol.app.JmolApp; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.datamodel.PDBEntry; -import jalview.datamodel.Sequence; -import jalview.datamodel.SequenceI; -import jalview.io.AlignFile; -import jalview.io.FileParse; - /** * Import and process PDB files with Jmol * @@ -95,10 +97,7 @@ public class PDBFileWithJmol extends AlignFile implements jmolApp.startViewer(viewer, null); } catch (ClassCastException x) { - throw new Error( - "Jmol version " - + JmolViewer.getJmolVersion() - + " is not compatible with this version of Jalview. Report this problem at issues.jalview.org", + throw new Error(MessageManager.formatMessage("error.jmol_version_not_compatible_with_jalview_version", new String[]{JmolViewer.getJmolVersion()}), x); } } @@ -155,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, @@ -179,11 +184,17 @@ 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) { + String mt = model.getModelTitle() == null ? getDataName() + : model.getModelTitle(); + if (_lastChainId >= ' ') + { + mt += _lastChainId; + } AlignmentAnnotation ann = new AlignmentAnnotation( "Secondary Structure", - "Secondary Structure from PDB File", asecstr); + "Secondary Structure for " + mt, asecstr); ann.belowAlignment=true; ann.visible=true; ann.autoCalculated=false; @@ -309,11 +320,16 @@ public class PDBFileWithJmol extends AlignFile implements case MEASURE: String mystatus = (String) data[3]; if (mystatus.indexOf("Picked") >= 0 - || mystatus.indexOf("Sequence") >= 0) // picking mode + || mystatus.indexOf("Sequence") >= 0) + { + // Picking mode sendConsoleMessage(strInfo); + } else if (mystatus.indexOf("Completed") >= 0) + { sendConsoleEcho(strInfo.substring(strInfo.lastIndexOf(",") + 2, strInfo.length() - 1)); + } break; case MESSAGE: sendConsoleMessage(data == null ? null : strInfo);