return null;
}
- /*
- * There will be better ways of doing this in the future, for now we'll use
- * the tried and tested MCview pdb mapping
+ /**
+ * create sequence structure mappings between each sequence and the given pdbFile (retrieved via the given protocol).
+ *
+ * @param sequence - one or more sequences to be mapped to pdbFile
+ * @param targetChains - optional chain specification for mapping each sequence to pdb (may be nill, individual elements may be nill)
+ * @param pdbFile - structure data resource
+ * @param protocol - how to resolve data from resource
+ * @return null or the structure data parsed as a pdb file
*/
synchronized public MCview.PDBfile setMapping(SequenceI[] sequence,
String[] targetChains, String pdbFile, String protocol)
{
+ /*
+ * There will be better ways of doing this in the future, for now we'll use
+ * the tried and tested MCview pdb mapping
+ */
MCview.PDBfile pdb = null;
try
{
AlignSeq maxAlignseq = null;
String maxChainId = " ";
PDBChain maxChain = null;
-
+ boolean first=true;
for (int i = 0; i < pdb.chains.size(); i++)
{
-
+ // TODO: re http://issues.jalview.org/browse/JAL-583 : this patch may need to be revoked
+ PDBChain chain = ((PDBChain) pdb.chains.elementAt(i));
+ if (targetChain.length()>0 && !targetChain.equals(chain.id))
+ {
+ continue; // don't try to map chains don't match.
+ }
+ // end of patch for limiting computed mappings
// TODO: correctly determine sequence type for mixed na/peptide
// structures
AlignSeq as = new AlignSeq(sequence[s], ((PDBChain) pdb.chains
.elementAt(i)).isNa ? AlignSeq.DNA : AlignSeq.PEP);
as.calcScoreMatrix();
as.traceAlignment();
- PDBChain chain = ((PDBChain) pdb.chains.elementAt(i));
- if (as.maxscore > max
+ if (first || as.maxscore > max
|| (as.maxscore == max && chain.id.equals(targetChain)))
{
+ first=false;
maxChain = chain;
max = as.maxscore;
maxAlignseq = as;
maxChainId = chain.id;
}
}
-
+ if (maxChain==null)
+ {
+ continue;
+ }
final StringBuffer mappingDetails = new StringBuffer();
mappingDetails.append("\n\nPDB Sequence is :\nSequence = "
+ maxChain.sequence.getSequenceAsString());