X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fstructure%2FStructureSelectionManager.java;h=2f1ddc07533637b08921013383d27f639ec12612;hb=1140532d01b32b648e7e5b17ea717ae790625f8f;hp=24320b54276f0f29539677311bd6a85a6914c0ff;hpb=3a65da0cf59dba22c4e15183db9f336486109538;p=jalview.git diff --git a/src/jalview/structure/StructureSelectionManager.java b/src/jalview/structure/StructureSelectionManager.java index 24320b5..2f1ddc0 100644 --- a/src/jalview/structure/StructureSelectionManager.java +++ b/src/jalview/structure/StructureSelectionManager.java @@ -53,6 +53,7 @@ import jalview.gui.IProgressIndicator; import jalview.io.AppletFormatAdapter; import jalview.io.DataSourceType; import jalview.io.StructureFile; +import jalview.structure.StructureImportSettings.TFType; import jalview.util.MappingUtils; import jalview.util.MessageManager; import jalview.util.Platform; @@ -154,16 +155,16 @@ public class StructureSelectionManager { if (mappings.isEmpty()) { - System.err.println("reportMapping: No PDB/Sequence mappings."); + jalview.bin.Console.errPrintln("reportMapping: No PDB/Sequence mappings."); } else { - System.err.println( + jalview.bin.Console.errPrintln( "reportMapping: There are " + mappings.size() + " mappings."); int i = 0; for (StructureMapping sm : mappings) { - System.err.println("mapping " + i++ + " : " + sm.pdbfile); + jalview.bin.Console.errPrintln("mapping " + i++ + " : " + sm.pdbfile); } } } @@ -326,7 +327,7 @@ public class StructureSelectionManager IProgressIndicator progress) { return computeMapping(true, sequence, targetChains, pdbFile, protocol, - progress); + progress, null, null, true); } /** @@ -349,10 +350,45 @@ public class StructureSelectionManager */ synchronized public StructureFile setMapping(boolean forStructureView, SequenceI[] sequenceArray, String[] targetChainIds, - String pdbFile, DataSourceType sourceType) + String pdbFile, DataSourceType sourceType, TFType tft, + String paeFilename) + { + return setMapping(forStructureView, sequenceArray, targetChainIds, + pdbFile, sourceType, tft, paeFilename, true); + } + + + /** + * create sequence structure mappings between each sequence and the given + * pdbFile (retrieved via the given protocol). Either constructs a mapping + * using NW alignment or derives one from any available SIFTS mapping data. + * + * @param forStructureView + * when true, record the mapping for use in mouseOvers + * + * @param sequenceArray + * - one or more sequences to be mapped to pdbFile + * @param targetChainIds + * - optional chain specification for mapping each sequence to pdb + * (may be nill, individual elements may be nill) - JBPNote: JAL-2693 + * - this should be List>, empty lists indicate no + * predefined mappings + * @param pdbFile + * - structure data resource + * @param sourceType + * - how to resolve data from resource + * @param tft - specify how to interpret the temperature factor column in the atom data + * @param paeFilename - when not null, specifies a filename containing a matrix formatted in JSON using one of the known PAE formats + * @param doXferSettings - when true, transfer annotation to mapped sequences in sequenceArray + * @return null or the structure data parsed as a pdb file + */ + synchronized public StructureFile setMapping(boolean forStructureView, + SequenceI[] sequenceArray, String[] targetChainIds, + String pdbFile, DataSourceType sourceType, TFType tft, + String paeFilename, boolean doXferSettings) { return computeMapping(forStructureView, sequenceArray, targetChainIds, - pdbFile, sourceType, null); + pdbFile, sourceType, null, tft, paeFilename, doXferSettings); } /** @@ -377,12 +413,16 @@ public class StructureSelectionManager * @param IProgressIndicator * reference to UI component that maintains a progress bar for the * mapping operation + * @param tft - specify how to interpret the temperature factor column in the atom data + * @param paeFilename - when not null, specifies a filename containing a matrix formatted in JSON using one of the known PAE formats + * @param doXferSettings - when true, transfer annotation to mapped sequences in sequenceArray * @return null or the structure data parsed as a pdb file */ synchronized public StructureFile computeMapping(boolean forStructureView, SequenceI[] sequenceArray, String[] targetChainIds, String pdbFile, DataSourceType sourceType, - IProgressIndicator progress) + IProgressIndicator progress, TFType tft, String paeFilename, + boolean doXferSettings) { long progressSessionId = System.currentTimeMillis() * 3; @@ -392,8 +432,7 @@ public class StructureSelectionManager // FIXME: possibly should just delete boolean parseSecStr = processSecondaryStructure - ? isStructureFileProcessed(pdbFile, sequenceArray) - : false; + && !isStructureFileProcessed(pdbFile, sequenceArray); StructureFile pdb = null; boolean isMapUsingSIFTs = SiftsSettings.isMapWithSifts(); @@ -402,10 +441,19 @@ public class StructureSelectionManager // FIXME if sourceType is not null, we've lost data here sourceType = AppletFormatAdapter.checkProtocol(pdbFile); pdb = new JmolParser(false, pdbFile, sourceType); + if (paeFilename != null) + { + pdb.setPAEMatrix(paeFilename); + } + pdb.setTemperatureFactorType(tft); pdb.addSettings(parseSecStr && processSecondaryStructure, parseSecStr && addTempFacAnnot, parseSecStr && secStructServices); + // save doXferSettings and reset after doParse() + boolean temp = pdb.getDoXferSettings(); + pdb.setDoXferSettings(doXferSettings); pdb.doParse(); + pdb.setDoXferSettings(temp); if (pdb.getId() != null && pdb.getId().trim().length() > 0 && DataSourceType.FILE == sourceType) { @@ -594,12 +642,12 @@ public class StructureSelectionManager chain.transferResidueAnnotation(siftsMapping, null); } catch (SiftsException e) { - System.err.println(e.getMessage()); + jalview.bin.Console.errPrintln(e.getMessage()); } catch (Exception e) { - System.err.println( + jalview.bin.Console.errPrintln( "Unexpected exception during SIFTS mapping - falling back to NW for this sequence/structure pair"); - System.err.println(e.getMessage()); + jalview.bin.Console.errPrintln(e.getMessage()); } } if (!foundSiftsMappings.isEmpty()) @@ -660,7 +708,7 @@ public class StructureSelectionManager private boolean isStructureFileProcessed(String pdbFile, SequenceI[] sequenceArray) { - boolean parseSecStr = true; + boolean processed = false; if (isPDBFileRegistered(pdbFile)) { for (SequenceI sq : sequenceArray) @@ -680,13 +728,13 @@ public class StructureSelectionManager // passed, not the structure data ID - if (PDBfile.isCalcIdForFile(ala, findIdForPDBFile(pdbFile))) { - parseSecStr = false; + processed = true; } } } } } - return parseSecStr; + return processed; } public void addStructureMapping(StructureMapping sm) @@ -1002,7 +1050,7 @@ public class StructureSelectionManager int indexpos = sm.getSeqPos(atom.getPdbResNum()); if (lastipos != indexpos || lastseq != sm.sequence) { - results.addResult(sm.sequence, indexpos, indexpos); + results.appendResult(sm.sequence, indexpos, indexpos); lastipos = indexpos; lastseq = sm.sequence; // construct highlighted sequence list @@ -1231,7 +1279,7 @@ public class StructureSelectionManager * * if (mappings[j].sequence == seq && mappings[j].getPdbId().equals(pdbid) * && mappings[j].pdbfile.equals(sl.getPdbFile())) { - * System.out.println(pdbid+" "+mappings[j].getPdbId() +" + * jalview.bin.Console.outPrintln(pdbid+" "+mappings[j].getPdbId() +" * "+mappings[j].pdbfile); * * java.awt.Color col; for(int index=0; index getPdbFileNameIdMap() + { + return pdbFileNameId; + } + + public Map getPdbIdFileNameMap() + { + return pdbIdFileName; + } + }