import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
private long progressSessionId;
- private boolean mappingForPhyre2Model;
/*
* Set of any registered mappings between (dataset) sequences.
private List<SelectionListener> sel_listeners = new ArrayList<SelectionListener>();
+ private Map<String, String> phyre2ModelTemplates = new Hashtable<String, String>();
+
/**
* @return true if will try to use external services for processing secondary
* structure
{
pdbFile = "INLINE" + pdb.getId();
}
-
+ boolean phyre2Template = isPhyre2Template(pdbFile);
List<StructureMapping> seqToStrucMapping = new ArrayList<StructureMapping>();
- if (!isMappingForPhyre2Model() && isMapUsingSIFTs && seq.isProtein())
+ if (!phyre2Template && isMapUsingSIFTs && seq.isProtein())
{
if (progress!=null) {
progress.setProgressBar(MessageManager
}
}
}
- else if (isMappingForPhyre2Model())
+ else if (phyre2Template)
{
setProgressBar(null);
setProgressBar(MessageManager
.getString("status.obtaining_mapping_with_phyre2_template_alignment"));
+ String fastaFile = getPhyre2FastaFileFor(pdbFile);
StructureMapping phyre2ModelMapping = new Phyre2Client(pdb)
- .getStructureMapping(seq, pdbFile, " ");
-
+ .getStructureMapping(seq, pdbFile, fastaFile, " ");
seqToStrucMapping.add(phyre2ModelMapping);
+ maxChain.makeExactMapping(maxAlignseq, seq);
+ maxChain.transferRESNUMFeatures(seq, null);
+ jalview.datamodel.Mapping sqmpping = maxAlignseq
+ .getMappingFromS1(false);
+ maxChain.transferResidueAnnotation(phyre2ModelMapping, sqmpping);
ds.addPDBId(maxChain.sequence.getAllPDBEntries().get(0));
}
else
return pdb;
}
- private boolean isCIFFile(String filename)
+ public void registerPhyre2Template(String phyre2Template,
+ String fastaMappingFile)
{
- String fileExt = filename.substring(filename.lastIndexOf(".") + 1,
- filename.length());
- return "cif".equalsIgnoreCase(fileExt);
+ phyre2ModelTemplates.put(phyre2Template, fastaMappingFile);
}
/**
if (listeners.elementAt(i) instanceof StructureListener)
{
sl = (StructureListener) listeners.elementAt(i);
- for (String pdbfile : sl.getPdbFile())
+ for (String pdbfile : sl.getStructureFiles())
{
pdbs.remove(pdbfile);
}
return;
}
+ SearchResultsI results = findAlignmentPositionsForStructurePositions(atoms);
+ for (Object li : listeners)
+ {
+ if (li instanceof SequenceListener)
+ {
+ ((SequenceListener) li).highlightSequence(results);
+ }
+ }
+ }
+
+ /**
+ * Constructs a SearchResults object holding regions (if any) in the Jalview
+ * alignment which have a mapping to the structure viewer positions in the
+ * supplied list
+ *
+ * @param atoms
+ * @return
+ */
+ public SearchResultsI findAlignmentPositionsForStructurePositions(
+ List<AtomSpec> atoms)
+ {
SearchResultsI results = new SearchResults();
for (AtomSpec atom : atoms)
{
}
}
}
- for (Object li : listeners)
- {
- if (li instanceof SequenceListener)
- {
- ((SequenceListener) li).highlightSequence(results);
- }
- }
+ return results;
}
/**
return seqmappings;
}
- public boolean isMappingForPhyre2Model()
+ public boolean isPhyre2Template(String structureFile)
{
- return mappingForPhyre2Model;
+ if (structureFile == null || phyre2ModelTemplates == null
+ || phyre2ModelTemplates.isEmpty())
+ {
+ return false;
+ }
+ return phyre2ModelTemplates.get(structureFile) != null
+ && !phyre2ModelTemplates.get(structureFile).isEmpty();
}
- public void setMappingForPhyre2Model(boolean mappingForPhyre2Model)
+ public String getPhyre2FastaFileFor(String structureFile)
{
- this.mappingForPhyre2Model = mappingForPhyre2Model;
+ return phyre2ModelTemplates.get(structureFile);
}
+
public static StructureSelectionManager getStructureSelectionManager()
{
return instances.values().iterator().next();
}
+ public void addStructureMapping(StructureMapping smapping)
+ {
+ mappings.add(smapping);
+ }
+
}