* @return null or the structure data parsed as a pdb file
*/
synchronized public StructureFile setMapping(SequenceI[] sequence,
- String[] targetChains, String pdbFile, DataSourceType protocol)
+ List<String>[] targetChains, String pdbFile,
+ DataSourceType protocol)
{
return setMapping(true, sequence, targetChains, pdbFile, protocol);
}
* @return null or the structure data parsed as a pdb file
*/
synchronized public StructureFile setMapping(boolean forStructureView,
- SequenceI[] sequenceArray, String[] targetChainIds,
+ SequenceI[] sequenceArray, List<String>[] targetChainIds,
String pdbFile, DataSourceType sourceType)
{
/*
e.printStackTrace();
}
- String targetChainId;
+ List<String> targetChainId = new ArrayList();
+ String _targetChainId;
for (int s = 0; s < sequenceArray.length; s++)
{
boolean infChain = true;
}
else if (seq.getName().indexOf("|") > -1)
{
- targetChainId = seq.getName()
+ targetChainId = new ArrayList();
+ _targetChainId=seq.getName()
.substring(seq.getName().lastIndexOf("|") + 1);
- if (targetChainId.length() > 1)
+ if (_targetChainId.length() > 1)
{
- if (targetChainId.trim().length() == 0)
+ if (_targetChainId.trim().length() == 0)
{
- targetChainId = " ";
+ _targetChainId = " ";
}
else
{
// not a valid chain identifier
- targetChainId = "";
+ _targetChainId = "";
}
}
+ targetChainId.add(_targetChainId);
}
else
{
- targetChainId = "";
+ _targetChainId = "";
}
+
/*
* Attempt pairwise alignment of the sequence with each chain in the PDB,
List<String> maximalChainIds = new ArrayList<>();
for (PDBChain chain : pdb.getChains())
{
- if (targetChainId.length() > 0 && !targetChainId.equals(chain.id)
+ if (targetChainId.size() > 0 && !targetChainId.contains(chain.id)
&& !infChain)
{
continue; // don't try to map chains don't match.
// as.calcScoreMatrix();
// as.traceAlignment();
- if (targetChainId.length() > 0 && chain.id.equals(targetChainId))
+ if (targetChainId.size() > 0 && targetChainId.contains(chain.id))
{
// Don't care - just pick this chain as the mapping
maxChain = chain;
.getString("status.obtaining_mapping_with_sifts"));
jalview.datamodel.Mapping sqmpping = maxAlignseq
.getMappingFromS1(false);
- if (targetChainId != null && !targetChainId.trim().isEmpty())
+ if (targetChainId != null && !targetChainId.isEmpty())
{
- StructureMapping siftsMapping;
+ List<StructureMapping> siftsMappings;
try
{
- siftsMapping = getStructureMapping(seq, pdbFile, targetChainId,
+ siftsMappings = getStructureMapping(seq, pdbFile, targetChainId,
pdb, maxChain, sqmpping, maxAlignseq);
- seqToStrucMapping.add(siftsMapping);
+ for (StructureMapping siftsMapping : siftsMappings)
+ {
+ seqToStrucMapping.add(siftsMapping);
maxChain.makeExactMapping(maxAlignseq, seq);
maxChain.transferRESNUMFeatures(seq, null);// FIXME: is this
// "IEA:SIFTS" ?
maxChain.transferResidueAnnotation(siftsMapping, sqmpping);
ds.addPDBId(maxChain.sequence.getAllPDBEntries().get(0));
+ }
} catch (SiftsException e)
{
{
try
{
- StructureMapping siftsMapping = getStructureMapping(seq,
- pdbFile, chain.id, pdb, chain, sqmpping, maxAlignseq);
- foundSiftsMappings.add(siftsMapping);
+ foundSiftsMappings.addAll(getStructureMapping(seq, pdbFile,
+ Arrays.asList(new String[]
+ { chain.id }), pdb, chain, sqmpping, maxAlignseq));
} catch (SiftsException e)
{
System.err.println(e.getMessage());
* @return
* @throws SiftsException
*/
- private StructureMapping getStructureMapping(SequenceI seq,
- String pdbFile, String targetChainId, StructureFile pdb,
+ private List<StructureMapping> getStructureMapping(SequenceI seq,
+ String pdbFile, List<String> targetChainIdList, StructureFile pdb,
PDBChain maxChain, jalview.datamodel.Mapping sqmpping,
AlignSeq maxAlignseq) throws SiftsException
{
- StructureMapping curChainMapping = siftsClient
+ List<StructureMapping> currChainMappingList = new ArrayList();
+ int p = 0;
+ do
+ {
+ String targetChainId = (targetChainIdList == null
+ || p >= targetChainIdList.size()) ? null
+ : targetChainIdList.get(p);
+ StructureMapping curChainMapping = siftsClient
+
.getSiftsStructureMapping(seq, pdbFile, targetChainId);
try
{
if (chain != null)
{
chain.transferResidueAnnotation(curChainMapping, sqmpping);
+ currChainMappingList.add(curChainMapping);
}
} catch (Exception e)
{
e.printStackTrace();
}
- return curChainMapping;
+ } while (targetChainIdList != null && ++p < targetChainIdList.size());
+ return currChainMappingList;
}
private List<StructureMapping> getNWMappings(SequenceI seq,