Merge branch 'Dbfetch_hotfix-JAL-1238' into develop
authorjprocter <jprocter@compbio.dundee.ac.uk>
Sun, 20 Jan 2013 14:29:22 +0000 (14:29 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Sun, 20 Jan 2013 14:29:22 +0000 (14:29 +0000)
1  2 
src/jalview/ws/dbsources/Pdb.java

@@@ -20,7 -20,6 +20,7 @@@ package jalview.ws.dbsources
  import jalview.datamodel.Alignment;
  import jalview.datamodel.DBRefEntry;
  import jalview.datamodel.DBRefSource;
 +import jalview.datamodel.PDBEntry;
  import jalview.datamodel.SequenceI;
  
  import java.util.Vector;
@@@ -31,7 -30,6 +31,7 @@@ 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;
  
@@@ -95,7 -93,7 +95,7 @@@ public class Pdb extends EbiFileRetriev
     */
    public AlignmentI getSequenceRecords(String queries) throws Exception
    {
 -
 +    AlignmentI pdbfile = null;
      Vector result = new Vector();
      String chain = null;
      String id = null;
      try
      {
  
 -      PDBfile pdbfile = new PDBfile(file,
 -              jalview.io.AppletFormatAdapter.FILE);
 -      for (int i = 0; i < pdbfile.chains.size(); i++)
 +      pdbfile = new FormatAdapter().readFile(file,
 +              jalview.io.AppletFormatAdapter.FILE, "PDB");
 +      if (pdbfile != null)
        {
 -        if (chain == null
 -                || ((PDBChain) pdbfile.chains.elementAt(i)).id
 -                        .toUpperCase().equals(chain))
 +        for (SequenceI pdbcs : pdbfile.getSequences())
          {
 -          PDBChain pdbchain = (PDBChain) pdbfile.chains.elementAt(i);
 -          // 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());
 -          // 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);
 -           */
 -          // 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
 -          DBRefEntry dbentry = new DBRefEntry(getDbSource(),
 -                  getDbVersion(), id + pdbchain.id);
 -          sq.addDBRef(dbentry);
 -          // and add seuqence to the retrieved set
 -          result.addElement(sq.deriveSequence());
 +          String chid = null;
 +          // Mapping map=null;
 +          for (PDBEntry pid : (Vector<PDBEntry>) pdbcs.getPDBId())
 +          {
 +            if (pid.getFile() == file)
 +            {
 +              chid = (String) pid.getProperty().get("CHAIN");
 +
 +            }
 +            ;
 +
 +          }
 +          if (chain == null
 +                  || (chid != null && (chid.equals(chain)
 +                          || chid.trim().equals(chain.trim()) || (chain
 +                          .trim().length() == 0 && chid.equals("_")))))
 +          {
 +            pdbcs.setName(jalview.datamodel.DBRefSource.PDB + "|" + id
 +                    + "|" + pdbcs.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);
 +             */
 +            // 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
 +            DBRefEntry dbentry = new DBRefEntry(getDbSource(),
 +                    getDbVersion(), (chid == null ? id : id + chid));
 +            // dbentry.setMap()
 +            pdbcs.addDBRef(dbentry);
 +          }
 +          else
 +          {
 +            // remove this sequence from the alignment - since it's not from the
 +            // right chain
 +            pdbfile.deleteSequence(pdbcs);
 +          }
          }
        }
 -
 -      if (result.size() < 1)
 +      if (pdbfile == null || pdbfile.getHeight() < 1)
        {
          throw new Exception("No PDB Records for " + id + " chain "
                  + ((chain == null) ? "' '" : chain));
        stopQuery();
        throw (ex);
      }
 -
 -    SequenceI[] results = new SequenceI[result.size()];
 -    for (int i = 0, j = result.size(); i < j; i++)
 -    {
 -      results[i] = (SequenceI) result.elementAt(i);
 -      result.setElementAt(null, i);
 -    }
 -    return new Alignment(results);
 +    return pdbfile;
    }
  
    /*
      return "PDB"; // getDbSource();
    }
  
+   @Override
+   public int getTier()
+   {
+     return 0;
+   }
  }