+
/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
import jalview.io.FormatAdapter;
import jalview.io.PDBFeatureSettings;
import jalview.structure.StructureImportSettings;
import jalview.util.MessageManager;
+import jalview.util.Platform;
import jalview.ws.ebi.EBIFetchClient;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
private static final int PDB_ID_LENGTH = 4;
+ private static Regex ACCESSION_REGEX;
+
public Pdb()
{
super();
@Override
public Regex getAccessionValidator()
{
- return new Regex("([1-9][0-9A-Za-z]{3}):?([ _A-Za-z0-9]?)");
+ if (ACCESSION_REGEX == null)
+ {
+ ACCESSION_REGEX = Platform
+ .newRegex("([1-9][0-9A-Za-z]{3}):?([ _A-Za-z0-9]?)");
+ }
+ return ACCESSION_REGEX;
}
/*
stopQuery();
return null;
}
- String ext = StructureImportSettings.getDefaultStructureFileFormat()
- .equalsIgnoreCase(Type.MMCIF.toString()) ? ".cif" : ".xml";
+
+ /*
+ * ensure that an mmCIF format structure file is saved with extension.cif,
+ * because the Chimera "open" command recognises this extension
+ */
+ Type pdbFileFormat = StructureImportSettings
+ .getDefaultStructureFileFormat();
+ String ext = pdbFileFormat.getExtension();
+ String fetchFormat = pdbFileFormat.getFormat();
+
EBIFetchClient ebi = new EBIFetchClient();
- file = ebi.fetchDataAsFile(
- "pdb:" + id,
- StructureImportSettings.getDefaultStructureFileFormat()
- .toLowerCase(), ext).getAbsolutePath();
+ File tmpFile = ebi.fetchDataAsFile("pdb:" + id, fetchFormat, ext);
+ file = tmpFile.getAbsolutePath();
stopQuery();
if (file == null)
{
}
try
{
-
- pdbAlignment = new FormatAdapter().readFile(file,
- jalview.io.AppletFormatAdapter.FILE,
- StructureImportSettings.getDefaultStructureFileFormat());
+ // todo get rid of Type and use FileFormatI instead?
+ FileFormatI fileFormat = (pdbFileFormat == Type.PDB) ? FileFormat.PDB
+ : FileFormat.MMCif;
+ pdbAlignment = new FormatAdapter().readFile(tmpFile,
+ DataSourceType.FILE, fileFormat);
if (pdbAlignment != null)
{
List<SequenceI> toremove = new ArrayList<SequenceI>();
}
}
- if (chain == null
- || (chid != null && (chid.equals(chain)
- || chid.trim().equals(chain.trim()) || (chain
- .trim().length() == 0 && chid.equals("_")))))
+ if (chain == null || (chid != null && (chid.equals(chain)
+ || chid.trim().equals(chain.trim())
+ || (chain.trim().length() == 0 && chid.equals("_")))))
{
// FIXME seems to result in 'PDB|1QIP|1qip|A' - 1QIP is redundant.
// TODO: suggest simplify naming to 1qip|A as default name defined
- pdbcs.setName(jalview.datamodel.DBRefSource.PDB + SEPARATOR
- + id + SEPARATOR + pdbcs.getName());
+ pdbcs.setName(jalview.datamodel.DBRefSource.PDB + SEPARATOR + id
+ + SEPARATOR + pdbcs.getName());
// Might need to add more metadata to the PDBEntry object
// like below
/*
if (pdbAlignment == null || pdbAlignment.getHeight() < 1)
{
throw new Exception(MessageManager.formatMessage(
- "exception.no_pdb_records_for_chain", new String[] { id,
- ((chain == null) ? "' '" : chain) }));
+ "exception.no_pdb_records_for_chain", new String[]
+ { id, ((chain == null) ? "' '" : chain) }));
}
} catch (Exception ex) // Problem parsing PDB file