X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FPdb.java;h=7586856ab95c47b59c996e6e041b2f72304ed7f9;hb=a45774ee31d9f35d4eff46d54d7deab719afb092;hp=07df2c4512dfd12ca6680cd27bec416f70a39684;hpb=fefbeb6a7ff8cdce3580749e016bf7980e76679c;p=jalview.git diff --git a/src/jalview/ws/dbsources/Pdb.java b/src/jalview/ws/dbsources/Pdb.java index 07df2c4..7586856 100644 --- a/src/jalview/ws/dbsources/Pdb.java +++ b/src/jalview/ws/dbsources/Pdb.java @@ -1,5 +1,19 @@ -/** +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * + * 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. + * + * 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 . */ package jalview.ws.dbsources; @@ -21,22 +35,25 @@ import com.stevesoft.pat.Regex; import jalview.datamodel.AlignmentI; import jalview.io.FileParse; -import jalview.ws.DbSourceProxy; -import jalview.ws.DbSourceProxyImpl; -import jalview.ws.EBIFetchClient; +import jalview.ws.ebi.EBIFetchClient; +import jalview.ws.seqfetcher.DbSourceProxy; +import jalview.ws.seqfetcher.DbSourceProxyImpl; /** * @author JimP - * + * */ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy { - public Pdb() { + public Pdb() + { super(); addDbSourceProperty(DBRefSource.PROTSEQDB); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see jalview.ws.DbSourceProxy#getAccessionSeparator() */ public String getAccessionSeparator() @@ -45,15 +62,19 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy return null; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see jalview.ws.DbSourceProxy#getAccessionValidator() */ public Regex getAccessionValidator() { - return new Regex("[1-9][0-9A-Za-z]{3}[ _A-Za-z0-9]?"); + return new Regex("([1-9][0-9A-Za-z]{3}):?([ _A-Za-z0-9]?)"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see jalview.ws.DbSourceProxy#getDbSource() */ public String getDbSource() @@ -61,14 +82,19 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy return DBRefSource.PDB; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see jalview.ws.DbSourceProxy#getDbVersion() */ public String getDbVersion() { return "0"; } - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[]) */ public AlignmentI getSequenceRecords(String queries) throws Exception @@ -88,12 +114,17 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy } if (queries.length() > 4 && chain == null) { - chain = queries.substring(4); + chain = queries.substring(4, 5); id = queries.substring(0, 4); } + if (!isValidReference(id)) + { + System.err.println("Ignoring invalid pdb query: '" + id + "'"); + stopQuery(); + return null; + } EBIFetchClient ebi = new EBIFetchClient(); - file = ebi.fetchDataAsFile("pdb:" + id, "pdb", "raw") - .getAbsolutePath(); + file = ebi.fetchDataAsFile("pdb:" + id, "pdb", "raw").getAbsolutePath(); stopQuery(); if (file == null) { @@ -101,7 +132,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy } try { - + PDBfile pdbfile = new PDBfile(file, jalview.io.AppletFormatAdapter.FILE); for (int i = 0; i < pdbfile.chains.size(); i++) @@ -111,27 +142,27 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy .toUpperCase().equals(chain)) { PDBChain pdbchain = (PDBChain) pdbfile.chains.elementAt(i); - // Get the Chain's Sequence - who's dataset includes any special features added from the PDB file + // Get the Chain's Sequence - who's dataset includes any special + // features added from the PDB file SequenceI sq = pdbchain.sequence; - // Specially formatted name for the PDB chain sequences retrieved from the PDB - sq.setName(jalview.datamodel.DBRefSource.PDB+"|" + id + "|" + sq.getName()); + // Specially formatted name for the PDB chain sequences retrieved from + // the PDB + sq.setName(jalview.datamodel.DBRefSource.PDB + "|" + id + "|" + + sq.getName()); // Might need to add more metadata to the PDBEntry object // like below /* - * PDBEntry entry = new PDBEntry(); - // Construct the PDBEntry - entry.setId(id); - if (entry.getProperty() == null) - entry.setProperty(new Hashtable()); - entry.getProperty().put("chains", - pdbchain.id - + "=" + sq.getStart() - + "-" + sq.getEnd()); - sq.getDatasetSequence().addPDBId(entry); + * PDBEntry entry = new PDBEntry(); // Construct the PDBEntry + * entry.setId(id); if (entry.getProperty() == null) + * entry.setProperty(new Hashtable()); + * entry.getProperty().put("chains", pdbchain.id + "=" + sq.getStart() + * + "-" + sq.getEnd()); sq.getDatasetSequence().addPDBId(entry); */ // Add PDB DB Refs - // We make a DBRefEtntry because we have obtained the PDB file from a verifiable source - // JBPNote - PDB DBRefEntry should also carry the chain and mapping information + // We make a DBRefEtntry because we have obtained the PDB file from a + // verifiable source + // JBPNote - PDB DBRefEntry should also carry the chain and mapping + // information DBRefEntry dbentry = new DBRefEntry(getDbSource(), getDbVersion(), id + pdbchain.id); sq.addDBRef(dbentry); @@ -143,7 +174,7 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy if (result.size() < 1) { throw new Exception("No PDB Records for " + id + " chain " - + ((chain == null) ? " " : chain)); + + ((chain == null) ? "' '" : chain)); } } catch (Exception ex) // Problem parsing PDB file { @@ -160,7 +191,9 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy return new Alignment(results); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String) */ public boolean isValidReference(String accession) @@ -177,4 +210,9 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy return "1QIPA"; } + public String getDbName() + { + return "PDB"; // getDbSource(); + } + }