--- /dev/null
+JALVIEW_ANNOTATION
+HIDE_INSERTIONS
+STRUCTMODEL c4n58A_ c4n58A_.1.pdb 1 54 48 143 <b>PDB Header: </b>Hyrolase<br><b>Chain: </b>A<br><b>PDB Molecule: </b>Pectocin m2<br> <b>PDB Title: </b>Crystal structure of pectocin m2 at 1.86 amgtroms
+STRUCTMODEL d1a70a_ d1a70a_.2.pdb 1 71 48 144 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1offa_ d1offa_.3.pdb 1 73 48 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1frra_ d1frra_.4.pdb 0.999 62 49 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1pfda_ d1pfda_.5.pdb 0.999 70 48 143 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1frda_ d1frda_.6.pdb 0.999 50 48 143 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1fxia_ d1fxia_.7.pdb 0.999 62 48 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1gaqb_ d1gaqb_.8.pdb 0.999 71 48 144 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1iuea_ d1iuea_.9.pdb 0.999 48 48 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1awda_ d1awda_.10.pdb 0.999 68 50 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1wria_ d1wria_.11.pdb 0.999 59 49 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d1czpa_ d1czpa_.12.pdb 0.999 64 48 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d2cjoa_ d2cjoa_.13.pdb 0.999 63 48 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL d4fxca_ d4fxca_.14.pdb 0.999 64 48 142 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin-related
+STRUCTMODEL c4itkA_ c4itkA_.15.pdb 0.999 57 50 142 <b>PDB Header: </b>Electron transport<br><b>Chain: </b>A<br><b>PDB Molecule: </b>Apoferredoxin <br><b>PDB Title: </b>The structure of c.reinhardtii ferredoxin 2
+STRUCTMODEL c1krhA_ c1krhA_.16.pdb 0.999 25 48 142 <b>PDB Header: </b>Oxidoreductase<br><b>Chain: </b>A<br><b>PDB Molecule: </b>Benzoate 1,2-deoxygenase reductase <br> <b>PDB Title: </b>X-ray structure of benzoate deoxygenate reductase
+STRUCTMODEL d1krha3 d1krha3.17.pdb 0.999 24 48 143 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin domains from multi domain proteins
+STRUCTMODEL d1jq4a_ d1jq4a_.18.pdb 0.999 29 47 138 <b>Fold: </b>Beta-Grasp (ubiquitin-like)<br><b>Superfamily: </b>2Fe-2S ferredoxin-like<br><b>Family: </b>2Fe-2S ferredoxin domains from multi domain proteins
+STRUCTMODEL c4wqmA_ c4wqmA_.19.pdb 0.999 28 49 144 <b>PDB header: </b>Oxidoreductase<br><b>Chain: </b>A<br><b>PDB Molecule: </b>Toluene-4-monooxygenase electron transfer component<br><b>PDB Title: </b>Structure of the toluene 4-monooxygenase nah oxidoreductase t4mof,2 k270s k271s variant
+STRUCTMODEL c2piaA_ c2piaA_.20.pdb 0.999 22 1 136 <b>PDB header: </b>Reductase<br><b>Chain: </b>A<br><b>PDB Molecule: </b>Phthalate deoxygenase reductase<br><b>PDB Title: </b>Phthalate deoxygenate reductase: a modular structure for2 electron transfer from pyridine nucleotides to [2fe-2s]
\ No newline at end of file
import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
-import javax.swing.JOptionPane;
-
/**
* GUI related routines for associating PDB files with sequences
*
{
/**
- * assocate the given PDB file with
+ * associate the given PDB file with
*
* @param choice
* @param sequence
if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
{
selectedStructureFileName = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", selectedStructureFileName);
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY",
+ selectedStructureFileName);
validateSelections();
}
}
"-Select Associated Seq-")))
{
btn_pdbFromFile.setEnabled(true);
- if (selectedStructureFileName != null && selectedStructureFileName.length() > 0)
+ if (selectedStructureFileName != null
+ && selectedStructureFileName.length() > 0)
{
btn_view.setEnabled(true);
lbl_fromFileStatus.setIcon(goodImage);
{
final StructureSelectionManager ssm = ap.getStructureSelectionManager();
final int preferredHeight = pnl_filter.getHeight();
- ssm.setMappingForPhyre2Model(false);
new Thread(new Runnable()
{
@Override
selectedSequence = userSelectedSeq;
}
-
String pdbIdStr = txt_search.getText();
PDBEntry pdbEntry = selectedSequence.getPDBEntry(pdbIdStr);
if (pdbEntry == null)
PDBEntry[] pdbEntriesToView = new PDBEntry[] { pdbEntry };
launchStructureViewer(ssm, pdbEntriesToView, ap,
new SequenceI[] { selectedSequence });
- }
- else if (currentView == VIEWS_FROM_FILE)
- {
- SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel
- .getCmb_assSeq().getSelectedItem()).getSequence();
- if (userSelectedSeq != null)
- {
- selectedSequence = userSelectedSeq;
- }
- PDBEntry fileEntry = new AssociateStructureFileWithSeq()
- .associateStructureWithSeq(selectedStructureFileName,
- DataSourceType.FILE,
- selectedSequence, true, Desktop.instance);
+ }
+ else if (currentView == VIEWS_FROM_FILE)
+ {
+ SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel
+ .getCmb_assSeq().getSelectedItem()).getSequence();
+ if (userSelectedSeq != null)
+ {
+ selectedSequence = userSelectedSeq;
+ }
+ PDBEntry fileEntry = new AssociateStructureFileWithSeq()
+ .associateStructureWithSeq(selectedStructureFileName,
+ DataSourceType.FILE, selectedSequence, true,
+ Desktop.instance);
- launchStructureViewer(ssm,
- new PDBEntry[] { fileEntry }, ap,
+ launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
new SequenceI[] { selectedSequence });
}
else if (currentView == VIEWS_PHYRE2_PREDICTION)
selectedSequence = userSelectedSeq;
}
int templateColIndex = getPhyreResultTable()
- .getColumn("Template")
- .getModelIndex();
+ .getColumn("Template").getModelIndex();
int[] selectedRows = getPhyreResultTable().getSelectedRows();
PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
int count = 0;
.associateStructureWithSeq(structureFile,
DataSourceType.FILE, selectedSequence, true,
Desktop.instance);
+ ssm.registerPhyre2Template(structureFile);
}
final StructureSelectionManager ssm = ap
.getStructureSelectionManager();
- ssm.setMappingForPhyre2Model(true);
final long progressSessionId = System.currentTimeMillis();
ssm.setProgressSessionId(progressSessionId);
final AlignmentPanel alignPanel, SequenceI[] sequences)
{
long progressId = sequences.hashCode();
- setProgressBar(MessageManager
- .getString("status.launching_3d_structure_viewer"), progressId);
+ setProgressBar(
+ MessageManager
+ .getString("status.launching_3d_structure_viewer"),
+ progressId);
final StructureViewer sViewer = new StructureViewer(ssm);
setProgressBar(null, progressId);
}
}
}
- if (seq.getPrimaryDBRefs().size() == 0)
+ if (seq.getPrimaryDBRefs().size() == 0
+ && !ssm.isPhyre2Template(pdbe.getFile()))
{
seqsWithoutSourceDBRef.add(seq);
continue;
seqsMap.add(new SequenceI[] { seq });
}
SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
- setProgressBar(MessageManager
- .getString("status.fetching_3d_structures_for_selected_entries"), progressId);
+ setProgressBar(
+ MessageManager
+ .getString("status.fetching_3d_structures_for_selected_entries"),
+ progressId);
sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
}
else
{
setProgressBar(MessageManager.formatMessage(
"status.fetching_3d_structures_for",
- pdbEntriesToView[0].getId()),progressId);
+ pdbEntriesToView[0].getId()), progressId);
sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
}
setProgressBar(null, progressId);
import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.gui.Desktop;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
import jalview.schemes.UserColourScheme;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
-import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
{
boolean failedtoadd = true;
// expect
- // STRUCTMODEL <QUERYID> <TemplateID> <URL to model> <URL to
- // alignment>
+ // STRUCTMODEL <TemplateSeqId> <TemplateFileName> <Confidence> <%.I.D>
+ // <MatchStart> <MatchEnd> <Coverage> [<Other Information>]
if (st.hasMoreTokens()) {
refSeq = al.findName(refSeqId = st.nextToken());
if (refSeq == null)
else
{
String tempId = st.nextToken();
- String urlToModel = st.nextToken();
- String urlToPairwise = st.hasMoreTokens() ? st.nextToken()
- : "";
- if (add_structmodel(al, refSeq, tempId, urlToModel,
- urlToPairwise))
+ String confidence = 100 * Double.valueOf(st.nextToken()) + "";
+ String pid = st.nextToken();
+ String alignRange = st.nextToken() + "-" + st.nextToken();
+ String otherInfo = st.hasMoreTokens() ? st.nextToken() : "";
+ String coverage = "";
+ if (add_structmodel(al, refSeq, tempId, alignRange, coverage,
+ confidence, pid, otherInfo))
{
failedtoadd = false;
}
if (failedtoadd)
{
System.err
- .println("Need <QueryId> <TemplateId> <URL to Model> [<URL to pairwise alignment>] as tab separated fields after "
- + STRUCTMODEL);
+ .println("Need <TemplateSeqId> <TemplateFileName> <Confidence> <%.I.D> <MatchStart> <MatchEnd> <Coverage> [<Other Information>] as tab separated fields after"
+ + STRUCTMODEL
+ + ".\nNote: other information could be provided in html format ");
} else {
modified = true;
}
* @param urlToPairwise
* @return true if model and sequence was added
*/
- private boolean add_structmodel(AlignmentI al, SequenceI refSeq2, String tempId,
- String urlToModel, String urlToPairwise)
+ private boolean add_structmodel(AlignmentI al, SequenceI refSeq,
+ String tempId, String aRange, String coverage, String confidence,
+ String pid, String otherInfo)
{
- String warningMessage = null, modelPath = null, aliPath = null;
- DataSourceType modelProt = null, aliProt = null;
+ String warningMessage = null;
boolean added = false;
try {
- // locate tempId. if it exists, will need to merge, otherwise:
- SequenceI templateSeq = al.findName(tempId);
- // 1. load urlToModel
- modelPath = resolveAbsolute(urlToModel);
- modelProt = AppletFormatAdapter.checkProtocol(modelPath);
- // need to transfer to local temp file ?
- PDBEntry modelpe = new PDBEntry(tempId, null, Type.FILE, modelPath);
- PDBEntry templpe = new PDBEntry(tempId, null, Type.FILE, modelPath);
- refSeq2.addPDBId(modelpe);
- aliPath = resolveAbsolute(urlToPairwise);
- aliProt = AppletFormatAdapter.checkProtocol(aliPath);
- // 2. load urlToPairwise
- AlignmentI pwa = new AppletFormatAdapter().readFile(aliPath, aliProt,
- FileFormat.Fasta);
- SequenceI qPw = null, tPw = null;
- if (pwa != null)
- {
- // resolve query/template sequences in provided alignment
- qPw = pwa.findName(refSeqId);
- tPw = pwa.findName(tempId);
- }
- if (false)
- // (qPw != null && tPw != null)
- {
- // not yet complete
- // refalQ vvva--addrvvvtttddd
- // refalT ---aaaa---sss---ddd
- // profalQ ---v-v-v-a.-.-a---dd--r--vvvtt--td--dd
- // profalT ---.-.-.-aa-a-a---..--.--sss..--.d--dd
- // Pragmatic solution here:
- // Map templpe onto refalT only where refalT and refalQ are both
- // non-gaps
-
- // columns for start..end in refSeq2
- int[] gapMap = refSeq2.gapMap();
- // insert gaps in tPw
- int curi = 0, width = refSeq2.getLength();
- // TBC
- }
- else
- {
- // assume 1:1 - so synthesise sequences to use to construct mapping
- StructureFile pdbf = StructureSelectionManager
- .getStructureSelectionManager().setMapping(false,
- new SequenceI[] { refSeq2.getDatasetSequence() },
- null, modelPath, modelProt);
- refSeq2.getDatasetSequence().addPDBId(modelpe);
- if (templateSeq == null && tPw != null)
- {
- tPw.createDatasetSequence();
- tPw.getDatasetSequence().addPDBId(templpe); // needs to set mapping based on model yet...
- al.addSequence(tPw);
- added = true;
- }
- }
- // 3. pad/insert gaps in urlToPairwise according to gaps already present in
- // refSeq2
- // 4. add padded tempId sequence to alignment
- // 4. associate urlToModel with refSeq2 based on position map provided by
- // urlToPairwise
- // 5. associate urlToModel with tempId based on position map provided by
- // urlToPairwise
- // start a thread to load urlToModel and process/annotate sequences.
- } catch (IOException x)
+ String pdbFile = baseUri + tempId;
+ PDBEntry phyre2PDBEntry = new PDBEntry(tempId, null, Type.FILE,
+ pdbFile);
+ refSeq.getDatasetSequence().addPDBId(phyre2PDBEntry);
+ String phyre2ModelDesc = generatePhyre2InfoHTMLTable(aRange,
+ coverage, confidence, pid, otherInfo);
+ refSeq.setDescription(phyre2ModelDesc);
+ StructureSelectionManager ssm = StructureSelectionManager
+ .getStructureSelectionManager(Desktop.instance);
+ ssm.registerPhyre2Template(pdbFile);
+ added = true;
+
+ } catch (Exception x)
{
warningMessage = x.toString();
} finally {
{
System.err.println("Warnings whilst processing STRUCTMODEL: "+warningMessage);
}
- return added;
}
+ return added;
+ }
+
+ private String generatePhyre2InfoHTMLTable(String aRange,
+ String coverage, String confidence, String pid, String otherInfo)
+ {
+ StringBuilder phyre2InfoBuilder = new StringBuilder();
+ phyre2InfoBuilder.append("<html><table border=\"1\" width=100%>");
+ phyre2InfoBuilder
+ .append("<tr><td colspan=\"2\"><strong>Phyre2 Template Info</strong></td></tr>");
+ if (aRange != null && !aRange.isEmpty())
+ {
+ phyre2InfoBuilder.append("<tr><td>").append("Aligned range")
+ .append("</td><td>").append(aRange).append("</td></tr>");
+ }
+ if (coverage != null && !coverage.isEmpty())
+ {
+ phyre2InfoBuilder.append("<tr><td>").append("Coverage")
+ .append("</td><td>").append(coverage).append("</td></tr>");
+ }
+ if (confidence != null && !confidence.isEmpty())
+ {
+ phyre2InfoBuilder.append("<tr><td>").append("Confidence")
+ .append("</td><td>").append(confidence).append("</td></tr>");
+ }
+ if (pid != null && !pid.isEmpty())
+ {
+ phyre2InfoBuilder.append("<tr><td>").append("%.i.d")
+ .append("</td><td>").append(pid).append("</td></tr>");
+ }
+ if (otherInfo != null && !otherInfo.isEmpty())
+ {
+ phyre2InfoBuilder.append("<tr><td>").append("Other information")
+ .append("</td><td>").append(otherInfo).append("</td></tr>");
+ }
+ phyre2InfoBuilder.append("</table></html>");
+ return phyre2InfoBuilder.toString();
}
private String resolveAbsolute(String relURI)
private long progressSessionId;
- private boolean mappingForPhyre2Model;
/*
* Set of any registered mappings between (dataset) sequences.
private List<SelectionListener> sel_listeners = new ArrayList<SelectionListener>();
+ private List<String> phyre2ModelTemplates = new ArrayList<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
return pdb;
}
- private boolean isCIFFile(String filename)
+ public void registerPhyre2Template(String phyre2Template)
{
- String fileExt = filename.substring(filename.lastIndexOf(".") + 1,
- filename.length());
- return "cif".equalsIgnoreCase(fileExt);
+ phyre2ModelTemplates.add(phyre2Template);
}
/**
return seqmappings;
}
- public boolean isMappingForPhyre2Model()
+ public boolean isPhyre2Template(String structureFile)
{
- return mappingForPhyre2Model;
+ if (structureFile == null || phyre2ModelTemplates == null
+ || phyre2ModelTemplates.isEmpty())
+ {
+ return false;
+ }
+ return (phyre2ModelTemplates.contains(structureFile));
}
- public void setMappingForPhyre2Model(boolean mappingForPhyre2Model)
- {
- this.mappingForPhyre2Model = mappingForPhyre2Model;
- }
public static StructureSelectionManager getStructureSelectionManager()
{