X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructure%2FStructureSelectionManager.java;h=af0079870b139f6d4230a701df32371c7729fc68;hb=70c81d16f9b2bbcfcfb1479954c1caebff8e08cc;hp=9396be1fca7797e017f200774944e2c595f55872;hpb=e59522eaf09bd68c355590d144c004d0a0b14bfa;p=jalview.git diff --git a/src/jalview/structure/StructureSelectionManager.java b/src/jalview/structure/StructureSelectionManager.java index 9396be1..af00798 100644 --- a/src/jalview/structure/StructureSelectionManager.java +++ b/src/jalview/structure/StructureSelectionManager.java @@ -28,7 +28,7 @@ import jalview.datamodel.Annotation; import jalview.datamodel.PDBEntry; import jalview.datamodel.SearchResults; import jalview.datamodel.SequenceI; -import jalview.io.FormatAdapter; +import jalview.io.AppletFormatAdapter; import jalview.util.MessageManager; import java.io.PrintStream; @@ -46,6 +46,70 @@ public class StructureSelectionManager StructureMapping[] mappings; + private boolean processSecondaryStructure = false, + secStructServices = false, addTempFacAnnot = false; + + /** + * @return true if will try to use external services for processing secondary + * structure + */ + public boolean isSecStructServices() + { + return secStructServices; + } + + /** + * control use of external services for processing secondary structure + * + * @param secStructServices + */ + public void setSecStructServices(boolean secStructServices) + { + this.secStructServices = secStructServices; + } + + /** + * flag controlling addition of any kind of structural annotation + * + * @return true if temperature factor annotation will be added + */ + public boolean isAddTempFacAnnot() + { + return addTempFacAnnot; + } + + /** + * set flag controlling addition of structural annotation + * + * @param addTempFacAnnot + */ + public void setAddTempFacAnnot(boolean addTempFacAnnot) + { + this.addTempFacAnnot = addTempFacAnnot; + } + + /** + * + * @return if true, the structure manager will attempt to add secondary + * structure lines for unannotated sequences + */ + + public boolean isProcessSecondaryStructure() + { + return processSecondaryStructure; + } + + /** + * Control whether structure manager will try to annotate mapped sequences + * with secondary structure from PDB data. + * + * @param enable + */ + public void setProcessSecondaryStructure(boolean enable) + { + processSecondaryStructure = enable; + } + /** * debug function - write all mappings to stdout */ @@ -245,7 +309,7 @@ public class StructureSelectionManager * the tried and tested MCview pdb mapping */ MCview.PDBfile pdb = null; - boolean parseSecStr=true; + boolean parseSecStr = processSecondaryStructure; if (isPDBFileRegistered(pdbFile)) { for (SequenceI sq : sequence) @@ -260,11 +324,10 @@ public class StructureSelectionManager { for (AlignmentAnnotation ala : ds.getAnnotation()) { - // false if any annotation present from this structure // JBPNote this fails for jmol/chimera view because the *file* is // passed, not the structure data ID - - if (MCview.PDBfile.isCalcIdForFile(ala.getCalcId(), + if (MCview.PDBfile.isCalcIdForFile(ala, findIdForPDBFile(pdbFile))) { parseSecStr = false; @@ -275,9 +338,10 @@ public class StructureSelectionManager } try { - pdb = new MCview.PDBfile(true, parseSecStr, pdbFile, protocol); + pdb = new MCview.PDBfile(addTempFacAnnot, parseSecStr, + secStructServices, pdbFile, protocol); if (pdb.id != null && pdb.id.trim().length() > 0 - && FormatAdapter.FILE.equals(protocol)) + && AppletFormatAdapter.FILE.equals(protocol)) { registerPDBFile(pdb.id.trim(), pdbFile); } @@ -361,11 +425,13 @@ public class StructureSelectionManager + maxChain.residues.size() + "\n\n"); PrintStream ps = new PrintStream(System.out) { + @Override public void print(String x) { mappingDetails.append(x); } + @Override public void println() { mappingDetails.append("\n"); @@ -381,7 +447,10 @@ public class StructureSelectionManager + (maxAlignseq.seq1end + sequence[s].getEnd() - 1)); maxChain.makeExactMapping(maxAlignseq, sequence[s]); - + jalview.datamodel.Mapping sqmpping = maxAlignseq + .getMappingFromS1(false); + jalview.datamodel.Mapping omap = new jalview.datamodel.Mapping( + sqmpping.getMap().getInverse()); maxChain.transferRESNUMFeatures(sequence[s], null); // allocate enough slots to store the mapping from positions in @@ -427,7 +496,7 @@ public class StructureSelectionManager mappings[mappings.length - 1] = newMapping; } - maxChain.transferResidueAnnotation(newMapping); + maxChain.transferResidueAnnotation(newMapping, sqmpping); } // /////// @@ -453,7 +522,6 @@ public class StructureSelectionManager { return; } - boolean removeMapping = true; String[] handlepdbs; Vector pdbs = new Vector(); for (int i = 0; i < pdbfiles.length; pdbs.addElement(pdbfiles[i++]))