X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FPdb.java;h=61c5c0458fe4fa7090d3d2362e8659e3d7187ddf;hb=27c7530b396a5dd1addc4ab346ef2823d34fb335;hp=a8cc02ca1af703ab3cad7b06a8a585f0aaa45818;hpb=8d2724b83aca38ef75d68787cc5939d950467e63;p=jalview.git
diff --git a/src/jalview/ws/dbsources/Pdb.java b/src/jalview/ws/dbsources/Pdb.java
index a8cc02c..61c5c04 100644
--- a/src/jalview/ws/dbsources/Pdb.java
+++ b/src/jalview/ws/dbsources/Pdb.java
@@ -1,60 +1,67 @@
+
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
- * Copyright (C) 2014 The Jalview Authors
+ * 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.ws.dbsources;
-import jalview.datamodel.Alignment;
+import jalview.api.FeatureSettingsModelI;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.PDBEntry;
+import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.SequenceI;
+import jalview.io.FormatAdapter;
+import jalview.io.PDBFeatureSettings;
+import jalview.structure.StructureImportSettings;
+import jalview.util.MessageManager;
+import jalview.ws.ebi.EBIFetchClient;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
-import MCview.PDBChain;
-import MCview.PDBfile;
-
import com.stevesoft.pat.Regex;
-import jalview.datamodel.AlignmentI;
-import jalview.io.FormatAdapter;
-import jalview.ws.ebi.EBIFetchClient;
-import jalview.ws.seqfetcher.DbSourceProxy;
-
/**
* @author JimP
*
*/
-public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
+public class Pdb extends EbiFileRetrievedProxy
{
public Pdb()
{
super();
- addDbSourceProperty(DBRefSource.PROTSEQDB);
}
+ public static final String FEATURE_INSERTION = "INSERTION";
+
+ public static final String FEATURE_RES_NUM = "RESNUM";
+
/*
* (non-Javadoc)
*
* @see jalview.ws.DbSourceProxy#getAccessionSeparator()
*/
+ @Override
public String getAccessionSeparator()
{
// TODO Auto-generated method stub
@@ -66,6 +73,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
*
* @see jalview.ws.DbSourceProxy#getAccessionValidator()
*/
+ @Override
public Regex getAccessionValidator()
{
return new Regex("([1-9][0-9A-Za-z]{3}):?([ _A-Za-z0-9]?)");
@@ -76,6 +84,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
*
* @see jalview.ws.DbSourceProxy#getDbSource()
*/
+ @Override
public String getDbSource()
{
return DBRefSource.PDB;
@@ -86,6 +95,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
*
* @see jalview.ws.DbSourceProxy#getDbVersion()
*/
+ @Override
public String getDbVersion()
{
return "0";
@@ -96,9 +106,10 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
*
* @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[])
*/
+ @Override
public AlignmentI getSequenceRecords(String queries) throws Exception
{
- AlignmentI pdbfile = null;
+ AlignmentI pdbAlignment = null;
Vector result = new Vector();
String chain = null;
String id = null;
@@ -122,8 +133,13 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
stopQuery();
return null;
}
+ String ext = StructureImportSettings.getDefaultStructureFileFormat()
+ .equalsIgnoreCase(Type.MMCIF.toString()) ? ".cif" : ".xml";
EBIFetchClient ebi = new EBIFetchClient();
- file = ebi.fetchDataAsFile("pdb:" + id, "pdb", "raw").getAbsolutePath();
+ file = ebi.fetchDataAsFile("pdb:" + id,
+ StructureImportSettings.getDefaultStructureFileFormat().toLowerCase(),
+ ext)
+ .getAbsolutePath();
stopQuery();
if (file == null)
{
@@ -132,20 +148,21 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
try
{
- pdbfile = new FormatAdapter().readFile(file,
- jalview.io.AppletFormatAdapter.FILE, "PDB");
- if (pdbfile != null)
+ pdbAlignment = new FormatAdapter().readFile(file,
+ jalview.io.AppletFormatAdapter.FILE,
+ StructureImportSettings.getDefaultStructureFileFormat());
+ if (pdbAlignment != null)
{
- List toremove=new ArrayList();
- for (SequenceI pdbcs : pdbfile.getSequences())
+ List toremove = new ArrayList();
+ for (SequenceI pdbcs : pdbAlignment.getSequences())
{
String chid = null;
// Mapping map=null;
- for (PDBEntry pid : (Vector) pdbcs.getPDBId())
+ for (PDBEntry pid : pdbcs.getAllPDBEntries())
{
if (pid.getFile() == file)
{
- chid = (String) pid.getProperty().get("CHAIN");
+ chid = pid.getChainCode();
}
;
@@ -181,21 +198,30 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
}
else
{
- // mark this sequence to be removed from the alignment
+ // mark this sequence to be removed from the alignment
// - since it's not from the right chain
toremove.add(pdbcs);
}
}
- // now remove marked sequences
- for (SequenceI pdbcs:toremove) {
- pdbfile.deleteSequence(pdbcs);
+ // now remove marked sequences
+ for (SequenceI pdbcs : toremove)
+ {
+ pdbAlignment.deleteSequence(pdbcs);
+ if (pdbcs.getAnnotation() != null)
+ {
+ for (AlignmentAnnotation aa : pdbcs.getAnnotation())
+ {
+ pdbAlignment.deleteAnnotation(aa);
+ }
+ }
}
}
-
- if (pdbfile == null || pdbfile.getHeight() < 1)
+
+ if (pdbAlignment == null || pdbAlignment.getHeight() < 1)
{
- throw new Exception("No PDB Records for " + id + " chain "
- + ((chain == null) ? "' '" : chain));
+ throw new Exception(MessageManager.formatMessage(
+ "exception.no_pdb_records_for_chain", new String[] { id,
+ ((chain == null) ? "' '" : chain) }));
}
} catch (Exception ex) // Problem parsing PDB file
@@ -203,7 +229,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
stopQuery();
throw (ex);
}
- return pdbfile;
+ return pdbAlignment;
}
/*
@@ -211,6 +237,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
*
* @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String)
*/
+ @Override
public boolean isValidReference(String accession)
{
Regex r = getAccessionValidator();
@@ -218,13 +245,15 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
}
/**
- * obtain human glyoxalase chain A sequence
+ * human glyoxalase
*/
+ @Override
public String getTestQuery()
{
- return "1QIPA";
+ return "1QIP";
}
+ @Override
public String getDbName()
{
return "PDB"; // getDbSource();
@@ -235,4 +264,20 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
{
return 0;
}
+
+
+ /**
+ * Returns a descriptor for suitable feature display settings with
+ *
+ * - ResNums or insertions features visible
+ * - insertions features coloured red
+ * - ResNum features coloured by label
+ * - Insertions displayed above (on top of) ResNums
+ *
+ */
+ @Override
+ public FeatureSettingsModelI getFeatureColourScheme()
+ {
+ return new PDBFeatureSettings();
+ }
}