{
continue;
}
- final StringBuilder mappingDetails = new StringBuilder(128);
- mappingDetails.append(NEWLINE).append("PDB Sequence is :")
- .append(NEWLINE).append("Sequence = ")
- .append(maxChain.sequence.getSequenceAsString());
- mappingDetails.append(NEWLINE).append("No of residues = ")
- .append(maxChain.residues.size()).append(NEWLINE)
- .append(NEWLINE);
- PrintStream ps = new PrintStream(System.out)
- {
- @Override
- public void print(String x)
- {
- mappingDetails.append(x);
- }
-
- @Override
- public void println()
- {
- mappingDetails.append(NEWLINE);
- }
- };
-
- // mapWithNWAlignment();
- // mapWithSIFTS();
- maxAlignseq.printAlignment(ps);
-
- mappingDetails.append(NEWLINE).append("PDB start/end ");
- mappingDetails.append(String.valueOf(maxAlignseq.seq2start)).append(
- " ");
- mappingDetails.append(String.valueOf(maxAlignseq.seq2end));
- mappingDetails.append(NEWLINE).append("SEQ start/end ");
- // TODO JAL-1887 should be fixed from here
- mappingDetails.append(
- String.valueOf(maxAlignseq.seq1start + seq.getStart() - 1))
- .append(" ");
- mappingDetails.append(String.valueOf(maxAlignseq.seq1end
- + seq.getEnd() - 1));
-
- maxChain.makeExactMapping(maxAlignseq, seq);
- jalview.datamodel.Mapping sqmpping = maxAlignseq
- .getMappingFromS1(false);
- jalview.datamodel.Mapping omap = new jalview.datamodel.Mapping(
- sqmpping.getMap().getInverse());
- maxChain.transferRESNUMFeatures(seq, null);
-
- // allocate enough slots to store the mapping from positions in
- // sequence[s] to the associated chain
- int[][] mapping = new int[seq.findPosition(seq.getLength()) + 2][2];
- int resNum = -10000;
- int index = 0;
-
- do
- {
- Atom tmp = maxChain.atoms.elementAt(index);
- if (resNum != tmp.resNumber && tmp.alignmentMapping != -1)
- {
- resNum = tmp.resNumber;
- if (tmp.alignmentMapping >= -1)
- {
- // TODO (JAL-1836) address root cause: negative residue no in PDB
- // file
- mapping[tmp.alignmentMapping + 1][0] = tmp.resNumber;
- mapping[tmp.alignmentMapping + 1][1] = tmp.atomIndex;
- }
- }
-
- index++;
- } while (index < maxChain.atoms.size());
if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE))
{
pdbFile = "INLINE" + pdb.id;
}
- // StructureMapping newMapping = new StructureMapping(seq, pdbFile,
- // pdb.id, maxChainId, mapping, mappingDetails.toString());
- StructureMapping newMapping = new SiftsClient(pdb.id)
- .getSiftsMappingsFor(seq, pdbFile, maxChainId);
+
+ StructureMapping seqToStrucMapping = null;
+ boolean isMapViaSIFTs = Boolean.valueOf(jalview.bin.Cache.getDefault(
+ "MAP_WITH_SIFTS", "false"));
+ if (isMapViaSIFTs)
+ {
+ SiftsClient siftsClient = new SiftsClient(pdb.id);
+ seqToStrucMapping = siftsClient.getSiftsStructureMapping(seq,
+ pdbFile, maxChainId);
+ // TODO if SIFTs mapping fails.. then fallback to NW alignment
+ }
+ else
+ {
+ seqToStrucMapping = getNWMappings(seq, pdbFile,
+ maxChainId, maxChain, pdb,
+ maxAlignseq);
+ }
+
if (forStructureView)
{
- mappings.add(newMapping);
+ mappings.add(seqToStrucMapping);
}
- maxChain.transferResidueAnnotation(newMapping, sqmpping);
}
- // ///////
-
return pdb;
}
- private StructureMapping mapWithNWAlignment(StringBuilder mappingDetails,
- PDBChain maxChain, AlignSeq maxAlignseq, SequenceI seq,
- PrintStream ps)
+ private StructureMapping getNWMappings(SequenceI seq, String pdbFile,
+ String maxChainId, PDBChain maxChain, PDBfile pdb,
+ AlignSeq maxAlignseq)
{
- maxAlignseq.printAlignment(ps);
+ final StringBuilder mappingDetails = new StringBuilder(128);
+ PrintStream ps = new PrintStream(System.out)
+ {
+ @Override
+ public void print(String x)
+ {
+ mappingDetails.append(x);
+ }
- mappingDetails.append(NEWLINE).append("PDB start/end ");
- mappingDetails.append(String.valueOf(maxAlignseq.seq2start))
- .append(" ");
- mappingDetails.append(String.valueOf(maxAlignseq.seq2end));
- mappingDetails.append(NEWLINE).append("SEQ start/end ");
- // TODO JAL-1887 should be fixed from here
- mappingDetails.append(
- String.valueOf(maxAlignseq.seq1start + seq.getStart() - 1))
- .append(" ");
- mappingDetails.append(String.valueOf(maxAlignseq.seq1end + seq.getEnd()
- - 1));
+ @Override
+ public void println()
+ {
+ mappingDetails.append(NEWLINE);
+ }
+ };
+ maxAlignseq.printAlignment(ps);
maxChain.makeExactMapping(maxAlignseq, seq);
jalview.datamodel.Mapping sqmpping = maxAlignseq
.getMappingFromS1(false);
- jalview.datamodel.Mapping omap = new jalview.datamodel.Mapping(sqmpping
- .getMap().getInverse());
maxChain.transferRESNUMFeatures(seq, null);
// allocate enough slots to store the mapping from positions in
index++;
} while (index < maxChain.atoms.size());
- return null;
+ StructureMapping nwMapping = new StructureMapping(seq, pdbFile,
+ pdb.id, maxChainId, mapping, mappingDetails.toString());
+ maxChain.transferResidueAnnotation(nwMapping, sqmpping);
+ return nwMapping;
}
public void removeStructureViewerListener(Object svl, String[] pdbfiles)