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.ws.ebi.EBIFetchClient;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class Pdb extends EbiFileRetrievedProxy
{
private static final String SEPARATOR = "|";
+
private static final String COLON = ":";
- private static final int PDB_ID_LENGTH = 4;
+ private static final int PDB_ID_LENGTH = 4;
public Pdb()
{
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
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
return 0;
}
-
/**
* Returns a descriptor for suitable feature display settings with
* <ul>