X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureChooser.java;h=3fce931f3c0dd412cb7505e8f102224304a1d280;hb=90dad57dbc2c2cc8c9c77be3e3e2935fc7d7ecdc;hp=11e50dbf2ff6ffcfce7734918a8e68b923d07687;hpb=2ec1365eda085f8e21a8faa384c67c136774b599;p=jalview.git diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index 11e50db..3fce931 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -43,12 +43,15 @@ import javax.swing.JTable; import javax.swing.SwingUtilities; import javax.swing.table.AbstractTableModel; +import com.stevesoft.pat.Regex; + import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.bin.Console; import jalview.bin.Jalview; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; +import jalview.ext.jmol.JmolParser; import jalview.fts.api.FTSData; import jalview.fts.api.FTSDataColumnI; import jalview.fts.api.FTSRestClientI; @@ -679,7 +682,18 @@ public class StructureChooser extends GStructureChooser { selectedPdbFileName = chooser.getSelectedFile().getPath(); Cache.setProperty("LAST_DIRECTORY", selectedPdbFileName); + boolean guessTFType = localPdbPaeMatrixFileName == null; localPdbPaeMatrixFileName = guessPAEFilename(); + guessTFType |= localPdbPaeMatrixFileName != null; + Regex alphaFold = JmolParser.getNewAlphafoldValidator(); + if (guessTFType + && alphaFold.search(new File(selectedPdbFileName).getName()) + && !tempFacAsChanged) + { + // localPdbPaeMatrixFileName was null and now isn't and filename could + // well be AlphaFold and user hasn't adjusted the tempFacType + combo_tempFacAs.setSelectedItem(TFType.PLDDT); + } validateSelections(); } } @@ -1252,36 +1266,18 @@ public class StructureChooser extends GStructureChooser } else if (currentView == VIEWS_FROM_FILE) { - SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel - .getCmb_assSeq().getSelectedItem()).getSequence(); + StructureChooser sc = StructureChooser.this; + TFType tft = (TFType) sc.combo_tempFacAs.getSelectedItem(); + String paeFilename = sc.localPdbPaeMatrixFileName; + AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) fileChooserAssSeqPanel + .getCmb_assSeq().getSelectedItem(); + SequenceI userSelectedSeq = assSeqOpt.getSequence(); if (userSelectedSeq != null) - { selectedSequence = userSelectedSeq; - } - PDBEntry fileEntry = new AssociatePdbFileWithSeq() - .associatePdbWithSeq(selectedPdbFileName, - DataSourceType.FILE, selectedSequence, true, - Desktop.instance); - /* LOOK AT - public PDBEntry associatePdbWithSeq(String choice, DataSourceType file, - SequenceI sequence, boolean prompt, - StructureSelectionManagerProvider ssmp) - IN AssociatePdbFileWithSeq */ - - // DO SOMETHING WITH - if (StructureChooser.this.localPdbPaeMatrixFileName != null) - { - - } - if (StructureChooser.this.combo_tempFacAs - .getSelectedItem() != null) - { - - } + String pdbFilename = selectedPdbFileName; - sViewer = launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, - ap, new SequenceI[] - { selectedSequence }); + StructureChooser.openStructureFileForSequence(ssm, sc, ap, + selectedSequence, true, pdbFilename, tft, paeFilename); } SwingUtilities.invokeLater(new Runnable() { @@ -1411,6 +1407,7 @@ public class StructureChooser extends GStructureChooser setProgressBar(MessageManager.formatMessage( "status.fetching_3d_structures_for", pdbEntriesToView[0].getId()), progressId); + // Can we pass a pre-computeMappinged pdbFile? theViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel); } setProgressBar(null, progressId); @@ -1709,30 +1706,29 @@ public class StructureChooser extends GStructureChooser /** * Open a single structure file for a given sequence */ - public static void openStructureFileForSequence(AlignmentPanel ap, - SequenceI seq, File sFile) + public static void openStructureFileForSequence( + StructureSelectionManager ssm, StructureChooser sc, + AlignmentPanel ap, SequenceI seq, boolean prompt, + String sFilename, TFType tft, String paeFilename) { - // Open the chooser headlessly. Not sure this is actually needed ? - StructureChooser sc = new StructureChooser(new SequenceI[] { seq }, seq, - ap, false); - StructureSelectionManager ssm = ap.getStructureSelectionManager(); - PDBEntry fileEntry = null; - try - { - fileEntry = new AssociatePdbFileWithSeq().associatePdbWithSeq( - sFile.getAbsolutePath(), DataSourceType.FILE, seq, true, - Desktop.instance); - } catch (Exception e) - { - Console.error("Could not open structure file '" - + sFile.getAbsolutePath() + "'"); - return; + boolean headless = false; + if (sc == null) + { + headless = true; + sc = new StructureChooser(new SequenceI[] { seq }, seq, ap, false); } + if (ssm == null) + ssm = ap.getStructureSelectionManager(); + + PDBEntry fileEntry = new AssociatePdbFileWithSeq().associatePdbWithSeq( + sFilename, DataSourceType.FILE, seq, prompt, Desktop.instance, + tft, paeFilename); StructureViewer sViewer = sc.launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap, new SequenceI[] { seq }); - sc.mainFrame.dispose(); + if (headless) + sc.mainFrame.dispose(); } }