{\r
// 1. Load the mapping information from the file\r
Mapping map = new Mapping(uni.getClass().getClassLoader());\r
- java.net.URL url = uni.getClass().getResource("/uniprot_mapping.xml");\r
+ java.net.URL url = getClass().getResource("/uniprot_mapping.xml");\r
map.loadMapping(url);\r
\r
// 2. Unmarshal the data\r
if(!ids.contains(sequence.getName()))\r
{\r
ids.add(sequence.getName());\r
- unknownSequences.add(sequence.getName());\r
+ unknownSequences.add(sequence);\r
}\r
}\r
\r
\r
}\r
\r
- if (unknownSequences.size() > 0)\r
- {\r
- int reply = javax.swing.JOptionPane.showInternalConfirmDialog(\r
- Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences."\r
- +"\nPerform blast for unknown sequences?",\r
- "Blast for Unidentified Sequences",\r
- javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);\r
-\r
- if(reply == javax.swing.JOptionPane.YES_OPTION)\r
- new WSWUBlastClient(ap, align, unknownSequences);\r
- }\r
- else\r
- ((Alignment)dataset).featuresAdded = true;\r
+ promptBeforeBlast();\r
+\r
+ }\r
+\r
+\r
+ void promptBeforeBlast()\r
+ {\r
+ // This must be outside the run() body as java 1.5\r
+ // will not return any value from the OptionPane to the expired thread.\r
+ if (unknownSequences.size() > 0)\r
+ {\r
+ int reply = javax.swing.JOptionPane.showConfirmDialog(\r
+ Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences."\r
+ +"\nPerform blast for unknown sequences?",\r
+ "Blast for Unidentified Sequences",\r
+ javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);\r
+\r
+ if(reply == javax.swing.JOptionPane.YES_OPTION)\r
+ new WSWUBlastClient(ap, align, unknownSequences);\r
+ }\r
+ else\r
+ ((Alignment)dataset).featuresAdded = true;\r
\r
\r
ap.repaint();\r
return;\r
\r
SequenceI sequence = null;\r
- // String pdb = null;\r
\r
Vector entries = getUniprotEntries(file);\r
\r
if (sequence == null)\r
{\r
//Sequence maybe Name, not Accession\r
- idmatch = entry.getName().elementAt(0).toString();;\r
+ idmatch = entry.getName().elementAt(0).toString();\r
sequence = dataset.findName(idmatch);\r
}\r
\r
if (sequence == null)\r
{\r
- System.out.println("not found");\r
+ System.out.println(idmatch+" not found");\r
continue;\r
}\r
\r
ids.remove(sequence.getName());\r
- unknownSequences.remove(sequence.getName());\r
+ unknownSequences.remove(sequence);\r
\r
String nonGapped = AlignSeq.extractGaps("-. ", sequence.getSequence());\r
\r
\r
if (absStart == -1)\r
{\r
- unknownSequences.add(sequence.getName());\r
- sbuffer.append(sequence.getName() +\r
- " SEQUENCE NOT %100 MATCH \n");\r
+ // Is UniprotSequence contained in dataset sequence?\r
+ absStart = nonGapped.toString().indexOf(entry.getUniprotSequence().getContent());\r
+ if(absStart == -1)\r
+ {\r
+ unknownSequences.add(sequence.getName());\r
+ sbuffer.append(sequence.getName() +\r
+ " SEQUENCE NOT %100 MATCH \n");\r
+\r
+ continue;\r
+ }\r
+ else\r
+ {\r
+ if(entry.getFeature()!=null)\r
+ {\r
+ Enumeration e = entry.getFeature().elements();\r
+ while (e.hasMoreElements())\r
+ {\r
+ SequenceFeature sf = (SequenceFeature) e.nextElement();\r
+ sf.setBegin(sf.getBegin() + absStart + 1);\r
+ sf.setEnd(sf.getEnd() + absStart + 1);\r
+ }\r
+ }\r
+\r
+ sbuffer.append(sequence.getName() +\r
+ " HAS "+absStart+" PREFIXED RESIDUES COMPARED TO UNIPROT - ANY SEQUENCE FEATURES"\r
+ +" HAVE BEEN ADJUSTED ACCORDINGLY \n");\r
+ absStart = 0;\r
+ }\r
\r
- continue;\r
}\r
\r
int absEnd = absStart + nonGapped.toString().length();\r
absStart += 1;\r
\r
- sequence.setSequenceFeatures(entry.getFeatures());\r
- sequence.setStart(absStart);\r
- sequence.setEnd(absEnd);\r
-\r
- if ( (absStart != sequence.getStart()) || (absEnd != sequence.getEnd()))\r
+ Enumeration e = entry.getDbReference().elements();\r
+ Vector onlyPdbEntries = new Vector();\r
+ while(e.hasMoreElements())\r
{\r
- sbuffer.append("Updated: " + sequence.getName() + " " +\r
- sequence.getStart() + "/" + sequence.getEnd() +\r
- " to " + absStart + "/" + absEnd + "\n");\r
+ PDBEntry pdb = (PDBEntry)e.nextElement();\r
+ if(!pdb.getType().equals("PDB"))\r
+ continue;\r
+\r
+ onlyPdbEntries.addElement(pdb);\r
}\r
\r
+ sequence.setPDBId(onlyPdbEntries);\r
+ sequence.setSequenceFeatures(entry.getFeature());\r
+ sequence.setStart(absStart);\r
+ sequence.setEnd(absEnd);\r
\r
\r
int n = 0;\r
absStart = sequence.getSequence().indexOf(nonGapped);\r
absEnd = absStart + nonGapped.toString().length() - 1;\r
\r
- sbuffer.append("Updated: VISUAL " + seq2.getName() + " " +\r
- seq2.getStart() + "/" + seq2.getEnd() +\r
- " to " + (absStart + sequence.getStart()) + "/" +\r
-\r
- (absEnd + sequence.getStart()) + "\n");\r
-\r
- seq2.setStart(absStart + sequence.getStart());\r
- seq2.setEnd(absEnd + sequence.getStart());\r
+ // This is the Viewd alignment sequences\r
+ // No need to tell the user of the dataset updates\r
+ if ( (seq2.getStart() != absStart+sequence.getStart())\r
+ || (seq2.getEnd() != absEnd+sequence.getStart()))\r
+ {\r
+ sbuffer.append("Updated: " + seq2.getName() + " " +\r
+ seq2.getStart() + "/" + seq2.getEnd() +\r
+ " to " + (absStart + sequence.getStart()) + "/" +\r
+ (absEnd + sequence.getStart()) + "\n");\r
\r
+ seq2.setStart(absStart + sequence.getStart());\r
+ seq2.setEnd(absEnd + sequence.getStart());\r
+ }\r
}\r
\r
n++;\r