X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJmolParser.java;h=c64dac1fd2cb75249fbc98958227beb1c50ad296;hb=beb2fee66dde629e3bbb7febb38d0116e1a64df2;hp=9306388a7b8a71d8135f840afcad15bb693d100f;hpb=892e857760e779796e156b4fa36d97d8d31e73e1;p=jalview.git diff --git a/src/jalview/ext/jmol/JmolParser.java b/src/jalview/ext/jmol/JmolParser.java index 9306388..c64dac1 100644 --- a/src/jalview/ext/jmol/JmolParser.java +++ b/src/jalview/ext/jmol/JmolParser.java @@ -20,6 +20,7 @@ */ package jalview.ext.jmol; +import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -40,7 +41,6 @@ import com.stevesoft.pat.Regex; import jalview.bin.Console; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.AlignmentAnnotation.TFType; import jalview.datamodel.Annotation; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; @@ -50,6 +50,7 @@ import jalview.io.DataSourceType; import jalview.io.FileParse; import jalview.io.StructureFile; import jalview.schemes.ResidueProperties; +import jalview.structure.StructureImportSettings; import jalview.util.Format; import jalview.util.MessageManager; import jalview.ws.dbsources.EBIAlfaFold; @@ -67,8 +68,6 @@ public class JmolParser extends StructureFile implements JmolStatusListener { Viewer viewer = null; - private boolean alphaFoldModel; - public JmolParser(boolean immediate, Object inFile, DataSourceType sourceType) throws IOException { @@ -84,11 +83,15 @@ public class JmolParser extends StructureFile implements JmolStatusListener } public JmolParser(Object inFile, DataSourceType sourceType, - AlignmentAnnotation.TFType tempfacType) throws IOException + StructureImportSettings.TFType tempfacType) throws IOException { super(inFile, sourceType, tempfacType); } + public JmolParser(FileParse fp, boolean doXferSettings) throws IOException + { + super(fp, doXferSettings); + } public JmolParser(FileParse fp) throws IOException { super(fp); @@ -109,6 +112,12 @@ public class JmolParser extends StructureFile implements JmolStatusListener @Override public void parse() throws IOException { + parse(true); + } + + @Override + public void parse(boolean doXferSettings) throws IOException + { setChains(new Vector()); Viewer jmolModel = getJmolData(); jmolModel.openReader(getDataName(), getDataName(), getReader()); @@ -133,7 +142,7 @@ public class JmolParser extends StructureFile implements JmolStatusListener ? PDBEntry.Type.MMCIF.toString() : "PDB"); - transformJmolModelToJalview(jmolModel.ms); + transformJmolModelToJalview(jmolModel.ms, doXferSettings); } } @@ -203,7 +212,8 @@ public class JmolParser extends StructureFile implements JmolStatusListener return false; } - public void transformJmolModelToJalview(ModelSet ms) throws IOException + public void transformJmolModelToJalview(ModelSet ms, + boolean localDoXferSettings) throws IOException { try { @@ -231,8 +241,7 @@ public class JmolParser extends StructureFile implements JmolStatusListener { setId(pdbId); setPDBIdAvailable(true); - alphaFoldModel = alphaFold.search(pdbId) && isMMCIF; - + setAlphafoldModel(alphaFold.search(pdbId) && isMMCIF); } List significantAtoms = convertSignificantAtoms(ms); for (Atom tmpatom : significantAtoms) @@ -250,9 +259,8 @@ public class JmolParser extends StructureFile implements JmolStatusListener else { AnnotationRowBuilder builder = null; - String tempFString = null; if (isAlphafoldModel() - || this.getTemperatureFactorType() == AlignmentAnnotation.TFType.PLDDT) + || getTemperatureFactorType() == StructureImportSettings.TFType.PLDDT) { builder = new AlphaFoldAnnotationRowBuilder(); } @@ -263,7 +271,7 @@ public class JmolParser extends StructureFile implements JmolStatusListener } lastID = tmpatom.resNumIns.trim(); } - if (isParseImmediately()) + if (isParseImmediately() && localDoXferSettings) { // configure parsing settings from the static singleton xferSettings(); @@ -290,15 +298,28 @@ public class JmolParser extends StructureFile implements JmolStatusListener createAnnotation(chainseq, chain, ms.at); } } - if (isAlphafoldModel()) + // if Alphafold, fetch the PAE matrix if doesn't already have one + if (isAlphafoldModel() && !hasPAEMatrix()) + { + try + { + Console.info("Retrieving PAE for " + pdbId); + File paeFile = EBIAlfaFold.fetchAlphaFoldPAE(pdbId, null); + this.setPAEMatrix(paeFile.getAbsolutePath()); + } catch (Throwable t) + { + Console.error("Couldn't get the pAE for " + pdbId, t); + } + } + // add a PAEMatrix if set (either by above or otherwise) + if (hasPAEMatrix()) { - // TODO - work out how to handle different ways that pAE is provided - // try { - Console.info("retrieving pAE for " + pdbId); Alignment al = new Alignment(prot.toArray(new SequenceI[0])); - EBIAlfaFold.retrieve_AlphaFold_pAE(pdbId, al, null); + EBIAlfaFold.addAlphaFoldPAE(al, new File(this.getPAEMatrix()), 0, + null, false, false, null); + if (al.getAlignmentAnnotation() != null) { for (AlignmentAnnotation alann : al.getAlignmentAnnotation()) @@ -306,10 +327,13 @@ public class JmolParser extends StructureFile implements JmolStatusListener annotations.add(alann); } } - ; - } catch (Throwable t) + } catch (Throwable ff) { - Console.error("Couldn't get the pAE for " + pdbId, t); + Console.error("Couldn't import PAE Matrix from " + getPAEMatrix(), + ff); + warningMessage += "Couldn't import PAE Matrix" + + getNewlineString() + ff.getLocalizedMessage() + + getNewlineString(); } } } catch (OutOfMemoryError er) @@ -321,11 +345,6 @@ public class JmolParser extends StructureFile implements JmolStatusListener } } - private boolean isAlphafoldModel() - { - return alphaFoldModel; - } - private List convertSignificantAtoms(ModelSet ms) { List significantAtoms = new ArrayList();