*/
package jalview.io;
+import java.awt.Color;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.util.List;
+import java.util.Vector;
+
import jalview.analysis.AlignSeq;
import jalview.api.FeatureSettingsModelI;
import jalview.datamodel.Alignment;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.SequenceI;
+import jalview.ext.jmol.JmolParser;
import jalview.structure.StructureImportSettings;
-
-import java.awt.Color;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.util.List;
-import java.util.Vector;
-
+import jalview.structure.StructureImportSettings.TFType;
import mc_view.PDBChain;
public abstract class StructureFile extends AlignFile
private boolean pdbIdAvailable;
+ private TFType temperatureFactorType = TFType.DEFAULT;
+
+ private String paeMatrix = null;
+
+ private boolean alphaFoldModel;
+
+ public void setPAEMatrix(String paeFilename)
+ {
+ paeMatrix = paeFilename;
+ }
+
+ public String getPAEMatrix()
+ {
+ return paeMatrix;
+ }
+
+ public boolean hasPAEMatrix()
+ {
+ return paeMatrix != null;
+ }
+
+ public void setTemperatureFactorType(TFType t)
+ {
+ this.temperatureFactorType = t;
+ }
+
+ public TFType getTemperatureFactorType()
+ {
+ return temperatureFactorType;
+ }
+
+ public void setAlphafoldModel(boolean afm)
+ {
+ alphaFoldModel = afm;
+ }
+
+ public boolean isAlphafoldModel()
+ {
+ return alphaFoldModel;
+ }
+
public StructureFile(Object inFile, DataSourceType sourceType)
throws IOException
{
- super(inFile, sourceType);
+ this(inFile, sourceType, null);
+ }
+
+ public StructureFile(Object inFile, DataSourceType sourceType,
+ TFType tempfacType) throws IOException
+ {
+ super(false, inFile, sourceType);
+ this.setTemperatureFactorType(tempfacType);
+ doParse();
}
public StructureFile(FileParse fp) throws IOException
{
- super(fp);
+ this(fp, true);
+ }
+
+ public StructureFile(FileParse fp, boolean doXferSettings)
+ throws IOException
+ {
+ super(fp, doXferSettings);
}
public void addSettings(boolean addAlignmentAnnotations,
public void xferSettings()
{
- this.visibleChainAnnotation = StructureImportSettings
- .isVisibleChainAnnotation();
- this.predictSecondaryStructure = StructureImportSettings
- .isProcessSecondaryStructure();
- this.externalSecondaryStructure = StructureImportSettings
- .isExternalSecondaryStructure();
-
+ if (this.getDoXferSettings())
+ {
+ this.visibleChainAnnotation = StructureImportSettings
+ .isVisibleChainAnnotation();
+ this.predictSecondaryStructure = StructureImportSettings
+ .isProcessSecondaryStructure();
+ this.externalSecondaryStructure = StructureImportSettings
+ .isExternalSecondaryStructure();
+ this.temperatureFactorType = StructureImportSettings
+ .getTemperatureFactorType();
+ }
}
public StructureFile(boolean parseImmediately, Object dataObject,
pdbSequence.setName(getId() + "|" + pdbSequence.getName());
PDBEntry entry = new PDBEntry();
entry.setId(getId());
+ entry.setFakedPDBId(!isPPDBIdAvailable());
entry.setType(getStructureFileType());
if (chain.id != null)
{
protected void processPdbFileWithAnnotate3d(List<SequenceI> rna)
throws Exception
{
- // System.out.println("this is a PDB format and RNA sequence");
+ // jalview.bin.Console.outPrintln("this is a PDB format and RNA sequence");
// note: we use reflection here so that the applet can compile and run
// without the HTTPClient bits and pieces needed for accessing Annotate3D
// web service
processPdbFileWithAnnotate3d(rnaSequences);
} catch (Exception x)
{
- System.err.println("Exceptions when dealing with RNA in pdb file");
+ jalview.bin.Console
+ .errPrintln("Exceptions when dealing with RNA in pdb file");
x.printStackTrace();
}
{
try
{
- processWithJmolParser(proteinSequences);
+ processWithJmolParser(proteinSequences, true);
} catch (Exception x)
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Exceptions from Jmol when processing data in pdb file");
x.printStackTrace();
}
}
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private void processWithJmolParser(List<SequenceI> prot) throws Exception
+ private void processWithJmolParser(List<SequenceI> prot,
+ boolean doXferSettings) throws MalformedURLException, IOException
{
- try
- {
+ FileParse fp = new FileParse(getDataName(), dataSourceType);
- Class cl = Class.forName("jalview.ext.jmol.JmolParser");
- if (cl != null)
+ StructureImportSettings.setShowSeqFeatures(false);
+ StructureImportSettings.setVisibleChainAnnotation(false);
+ StructureImportSettings
+ .setProcessSecondaryStructure(predictSecondaryStructure);
+ StructureImportSettings
+ .setExternalSecondaryStructure(externalSecondaryStructure);
+ StructureImportSettings.setTemperatureFactorType(temperatureFactorType);
+ JmolParser jmf = new JmolParser(fp, doXferSettings);
+ AlignmentI al = new Alignment((SequenceI[]) jmf.getSeqsAsArray());
+ jmf.addAnnotations(al);
+ for (SequenceI sq : al.getSequences())
+ {
+ if (sq.getDatasetSequence() != null)
{
- final Constructor constructor = cl
- .getConstructor(new Class[]
- { FileParse.class });
- final Object[] args = new Object[] {
- new FileParse(getDataName(), dataSourceType) };
-
- StructureImportSettings.setShowSeqFeatures(false);
- StructureImportSettings.setVisibleChainAnnotation(false);
- StructureImportSettings
- .setProcessSecondaryStructure(predictSecondaryStructure);
- StructureImportSettings
- .setExternalSecondaryStructure(externalSecondaryStructure);
- Object jmf = constructor.newInstance(args);
- AlignmentI al = new Alignment((SequenceI[]) cl
- .getMethod("getSeqsAsArray", new Class[] {}).invoke(jmf));
- cl.getMethod("addAnnotations", new Class[] { AlignmentI.class })
- .invoke(jmf, al);
- for (SequenceI sq : al.getSequences())
- {
- if (sq.getDatasetSequence() != null)
- {
- sq.getDatasetSequence().getAllPDBEntries().clear();
- }
- else
- {
- sq.getAllPDBEntries().clear();
- }
- }
- replaceAndUpdateChains(prot, al, AlignSeq.PEP, false);
+ sq.getDatasetSequence().getAllPDBEntries().clear();
+ }
+ else
+ {
+ sq.getAllPDBEntries().clear();
}
- } catch (ClassNotFoundException q)
- {
}
+ replaceAndUpdateChains(prot, al, AlignSeq.PEP, false);
StructureImportSettings.setShowSeqFeatures(true);
}
- public PDBChain findChain(String id) throws Exception
+ /**
+ * Answers the first PDBChain found matching the given id, or null if none is
+ * found
+ *
+ * @param id
+ * @return
+ */
+ public PDBChain findChain(String id)
{
for (PDBChain chain : getChains())
{
return chain;
}
}
- throw new Exception("PDB chain not Found!");
+ return null;
}
public void makeResidueList()