X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructure%2FStructureSelectionManager.java;h=99065829fed8112c8c909262ad992d1a4d856e59;hb=ac2ed85d81f322445555e01b67f758a77f2ede74;hp=735d8140ba04cdef413d37512172f7977b3f37fb;hpb=90973fe728555071b0102da14e5aab0bf595983c;p=jalview.git diff --git a/src/jalview/structure/StructureSelectionManager.java b/src/jalview/structure/StructureSelectionManager.java index 735d814..9906582 100644 --- a/src/jalview/structure/StructureSelectionManager.java +++ b/src/jalview/structure/StructureSelectionManager.java @@ -598,6 +598,7 @@ public class StructureSelectionManager } List seqToStrucMapping = new ArrayList<>(); + List foundSiftsMappings = new ArrayList<>(); if (isMapUsingSIFTs && seq.isProtein()) { if (progress != null) @@ -622,26 +623,15 @@ public class StructureSelectionManager pdb.getId().toLowerCase(Locale.ROOT)); maxChain.transferResidueAnnotation(siftsMapping, null); ds.addPDBId(maxChain.sequence.getAllPDBEntries().get(0)); + foundSiftsMappings.add(siftsMapping); } catch (SiftsException e) { - // fall back to NW alignment Console.error(e.getMessage()); - StructureMapping nwMapping = getNWMappings(seq, pdbFile, - targetChainId, maxChain, pdb, maxAlignseq); - seqToStrucMapping.add(nwMapping); - maxChain.makeExactMapping(maxAlignseq, seq); - maxChain.transferRESNUMFeatures(seq, "IEA:Jalview", - pdb.getId().toLowerCase(Locale.ROOT)); // FIXME: is - // this - // "IEA:Jalview" ? - maxChain.transferResidueAnnotation(nwMapping, sqmpping); - ds.addPDBId(maxChain.sequence.getAllPDBEntries().get(0)); } } else { - List foundSiftsMappings = new ArrayList<>(); for (PDBChain chain : pdb.getChains()) { StructureMapping siftsMapping = null; @@ -665,32 +655,25 @@ public class StructureSelectionManager jalview.bin.Console.errPrintln(e.getMessage()); } } + // If sifts was successful, add mappings and return if (!foundSiftsMappings.isEmpty()) { - seqToStrucMapping.addAll(foundSiftsMappings); ds.addPDBId(sqmpping.getTo().getAllPDBEntries().get(0)); } - else - { - /* - * fallback to NeedlemanWunch. - */ - StructureMapping nwMapping = getNWMappings(seq, pdbFile, - maxChainId, maxChain, pdb, maxAlignseq); - seqToStrucMapping.add(nwMapping); - maxChain.transferRESNUMFeatures(seq, null, - pdb.getId().toLowerCase(Locale.ROOT)); // FIXME: is this - // "IEA:Jalview" ? - maxChain.transferResidueAnnotation(nwMapping, sqmpping); - ds.addPDBId(maxChain.sequence.getAllPDBEntries().get(0)); - } + } + + // If sifts was successful, add mappings and return + if (!foundSiftsMappings.isEmpty()) + { + seqToStrucMapping.addAll(foundSiftsMappings); } } - else + if (foundSiftsMappings.isEmpty()) { - // Not doing SIFTS + // Not doing SIFTS, or SIFTS failed for some reason. + // first check if we should use an identity mapping - if (idLengthChain != null && maxAlignseq.getS2Coverage() < 0.5) + if (idLengthChain != null && maxAlignseq.getS2Coverage() < 0.75) { Console.info( "Assuming 3Dsi identity mapping between structure and sequence");