X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructure%2FStructureSelectionManager.java;fp=src%2Fjalview%2Fstructure%2FStructureSelectionManager.java;h=fb96b2218eb06e0db036eae5bbe9798009128f41;hb=d8b9b83f2739ee2c11670af890d2c63b8c1c2b7c;hp=a5d973649ae24f680dad7e6e43ebcee65b685207;hpb=9f667972fd0c13f2be9c3aff73c6f57ea4be6f49;p=jalview.git diff --git a/src/jalview/structure/StructureSelectionManager.java b/src/jalview/structure/StructureSelectionManager.java index a5d9736..fb96b22 100644 --- a/src/jalview/structure/StructureSelectionManager.java +++ b/src/jalview/structure/StructureSelectionManager.java @@ -501,29 +501,67 @@ public class StructureSelectionManager if (isMapUsingSIFTs) { setProgressBar(null); - setProgressBar("Obtaining mapping with SIFTS"); + setProgressBar(MessageManager + .getString("status.obtaining_mapping_with_sifts")); jalview.datamodel.Mapping sqmpping = maxAlignseq .getMappingFromS1(false); if (targetChainId != null && !targetChainId.trim().isEmpty()) { - StructureMapping mapping = getStructureMapping(seq, pdbFile, - targetChainId, pdb, maxChain, sqmpping, maxAlignseq); - seqToStrucMapping.add(mapping); + StructureMapping siftsMapping; + try + { + siftsMapping = getStructureMapping(seq, pdbFile, targetChainId, + pdb, maxChain, sqmpping, maxAlignseq); + seqToStrucMapping.add(siftsMapping); + maxChain.makeExactMapping(maxAlignseq, seq); + maxChain.transferRESNUMFeatures(seq, null); + maxChain.transferResidueAnnotation(siftsMapping, sqmpping); + } catch (SiftsException e) + { + // fall back to NW alignment + System.err.println(e.getMessage()); + StructureMapping nwMapping = getNWMappings(seq, pdbFile, + targetChainId, maxChain, pdb, maxAlignseq); + seqToStrucMapping.add(nwMapping); + } } else { + ArrayList foundSiftsMappings = new ArrayList(); for (PDBChain chain : pdb.getChains()) { - StructureMapping mapping = getStructureMapping(seq, pdbFile, - chain.id, pdb, chain, sqmpping, maxAlignseq); - seqToStrucMapping.add(mapping); + try + { + StructureMapping siftsMapping = getStructureMapping(seq, + pdbFile, + chain.id, pdb, chain, sqmpping, maxAlignseq); + foundSiftsMappings.add(siftsMapping); + } catch (SiftsException e) + { + System.err.println(e.getMessage()); + } + } + if (!foundSiftsMappings.isEmpty()) + { + seqToStrucMapping.addAll(foundSiftsMappings); + maxChain.makeExactMapping(maxAlignseq, seq); + maxChain.transferRESNUMFeatures(seq, null); + maxChain.transferResidueAnnotation(foundSiftsMappings.get(0), + sqmpping); + } + else + { + StructureMapping nwMapping = getNWMappings(seq, pdbFile, + maxChainId, maxChain, pdb, maxAlignseq); + seqToStrucMapping.add(nwMapping); } } } else { setProgressBar(null); - setProgressBar("Obtaining mapping with NW alignment"); + setProgressBar(MessageManager + .getString("status.obtaining_mapping_with_nw_alignment")); seqToStrucMapping.add(getNWMappings(seq, pdbFile, maxChainId, maxChain, pdb, maxAlignseq)); } @@ -546,11 +584,8 @@ public class StructureSelectionManager private StructureMapping getStructureMapping(SequenceI seq, String pdbFile, String targetChainId, StructureFile pdb, PDBChain maxChain, jalview.datamodel.Mapping sqmpping, - AlignSeq maxAlignseq) + AlignSeq maxAlignseq) throws SiftsException { - String maxChainId = targetChainId; - try - { StructureMapping curChainMapping = siftsClient .getSiftsStructureMapping(seq, pdbFile, targetChainId); try @@ -565,15 +600,6 @@ public class StructureSelectionManager e.printStackTrace(); } return curChainMapping; - } catch (SiftsException e) - { - System.err.println(e.getMessage()); - System.err.println(">>> Now switching mapping with NW alignment..."); - setProgressBar(null); - setProgressBar(">>> Now switching mapping with NW alignment..."); - return getNWMappings(seq, pdbFile, maxChainId, maxChain, pdb, - maxAlignseq); - } } private StructureMapping getNWMappings(SequenceI seq,