X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fext%2Fjmol%2FPDBFileWithJmol.java;h=3df8957d9c01a47f566ce4f72b2abca926ec3853;hb=3b5fd72d019a6cd71f611b4110651ff6b62ce5bf;hp=962fe3cbf80e2fc4d93e85cc25a535866cb0e887;hpb=5d559ba1007072cbf2e7065a3a32356a188fea7f;p=jalview.git
diff --git a/src/jalview/ext/jmol/PDBFileWithJmol.java b/src/jalview/ext/jmol/PDBFileWithJmol.java
index 962fe3c..3df8957 100644
--- a/src/jalview/ext/jmol/PDBFileWithJmol.java
+++ b/src/jalview/ext/jmol/PDBFileWithJmol.java
@@ -1,32 +1,42 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
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;
-import javax.xml.parsers.ParserConfigurationException;
-
import org.jmol.api.JmolStatusListener;
import org.jmol.api.JmolViewer;
import org.jmol.constant.EnumCallback;
-import org.jmol.constant.EnumStructure;
-import org.jmol.modelset.Chain;
import org.jmol.modelset.Group;
import org.jmol.modelset.Model;
import org.jmol.modelset.ModelSet;
@@ -34,18 +44,6 @@ import org.jmol.modelset.Polymer;
import org.jmol.modelsetbio.BioPolymer;
import org.jmol.viewer.Viewer;
import org.openscience.jmol.app.JmolApp;
-import org.xml.sax.SAXException;
-
-import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
-import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
-import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
-import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
-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 and process PDB files with Jmol
@@ -61,15 +59,16 @@ public class PDBFileWithJmol extends AlignFile implements
Viewer viewer = null;
- public PDBFileWithJmol(String inFile, String type)
- throws ExceptionUnmatchedClosingParentheses, IOException,
- ExceptionFileFormatOrSyntax, ParserConfigurationException,
- SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed,
- InterruptedException
+ public PDBFileWithJmol(String inFile, String type) throws IOException
{
super(inFile, type);
}
+ public PDBFileWithJmol(FileParse fp) throws IOException
+ {
+ super(fp);
+ }
+
public PDBFileWithJmol()
{
// TODO Auto-generated constructor stub
@@ -98,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);
}
}
@@ -128,10 +124,7 @@ public class PDBFileWithJmol extends AlignFile implements
* @see jalview.io.AlignFile#parse()
*/
@Override
- public void parse() throws IOException, ExceptionFileFormatOrSyntax,
- ParserConfigurationException, SAXException,
- ExceptionPermissionDenied, ExceptionLoadingFailed,
- InterruptedException, ExceptionUnmatchedClosingParentheses
+ public void parse() throws IOException
{
Viewer jmd = getJmolData();
jmd.openReader(getDataName(), getDataName(), getReader());
@@ -161,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];
+ 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,
@@ -178,14 +177,32 @@ public class PDBFileWithJmol extends AlignFile implements
PDBEntry pdbe = new PDBEntry();
pdbe.setFile(getDataName());
pdbe.setId(getDataName());
+ pdbe.setProperty(new Hashtable());
+ // pdbe.getProperty().put("CHAIN", "" + _lastChainId);
+ pdbe.setChainCode(String.valueOf(_lastChainId));
sq.addPDBId(pdbe);
+ // JAL-1533
+ // 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;
+ ann.setCalcId(getClass().getName());
sq.addAlignmentAnnotation(ann);
+ ann.adjustForAlignment();
+ ann.validateRangeAndDisplay();
annotations.add(ann);
}
}
@@ -304,11 +321,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);