object.setVersion(jalview.bin.Cache.getProperty("VERSION"));\r
\r
jalview.datamodel.AlignmentI jal = af.viewport.alignment;\r
+ jalview.datamodel.AlignmentI jalhidden = null;\r
+\r
+ if(av.hasHiddenRows)\r
+ {\r
+ jalhidden = jal;\r
+ jal = jal.getHiddenSequences().getFullAlignment();\r
+ }\r
+\r
\r
SequenceSet vamsasSet = new SequenceSet();\r
Sequence vamsasSeq;\r
vamsasSet.setGapChar(jal.getGapCharacter() + "");\r
\r
JSeq jseq;\r
+ Vector pdbfiles = null;\r
\r
//SAVE SEQUENCES\r
int id = 0;\r
-\r
for (int i = 0; i < jal.getHeight(); i++)\r
{\r
seqids.add(jal.getSequenceAt(i));\r
-\r
vamsasSeq = new Sequence();\r
vamsasSeq.setId(id + "");\r
vamsasSeq.setName(jal.getSequenceAt(i).getName());\r
vamsasSeq.setSequence(jal.getSequenceAt(i).getSequence());\r
vamsasSeq.setDescription(jal.getSequenceAt(i).getDescription());\r
\r
+ if(jal.getSequenceAt(i).getDatasetSequence().getDBRef()!=null)\r
+ {\r
+ jalview.datamodel.DBRefEntry [] dbrefs =\r
+ jal.getSequenceAt(i).getDatasetSequence().getDBRef();\r
+\r
+ for(int d=0; d<dbrefs.length; d++)\r
+ {\r
+ DBRef dbref = new DBRef();\r
+ dbref.setSource( dbrefs[d].getSource() );\r
+ dbref.setVersion( dbrefs[d].getVersion());\r
+ dbref.setAccessionId(dbrefs[d].getAccessionId());\r
+ vamsasSeq.addDBRef(dbref);\r
+ }\r
+ }\r
+\r
jseq = new JSeq();\r
jseq.setStart(jal.getSequenceAt(i).getStart());\r
jseq.setEnd(jal.getSequenceAt(i).getEnd());\r
-\r
jseq.setColour(jal.getSequenceAt(i).getColor().getRGB());\r
\r
jseq.setId(id);\r
\r
+ if (av.hasHiddenRows)\r
+ {\r
+ jseq.setHidden(jalhidden.getHiddenSequences().isHidden(\r
+ jal.getSequenceAt(i)));\r
+\r
+ if(jal.getSequenceAt(i).getHiddenSequences()!=null)\r
+ {\r
+ jalview.datamodel.SequenceI [] reps =\r
+ jal.getSequenceAt(i).getHiddenSequences().getSequencesInOrder(jal);\r
+\r
+ for(int h=0; h<reps.length; h++)\r
+ {\r
+ jseq.addHiddenSequences(\r
+ jal.findIndex(reps[h])\r
+ );\r
+ }\r
+ }\r
+ }\r
+\r
+\r
if(jal.getSequenceAt(i).getDatasetSequence().getSequenceFeatures()!=null)\r
{\r
jalview.datamodel.SequenceFeature[] sf\r
features.setBegin(sf[index].getBegin());\r
features.setEnd(sf[index].getEnd());\r
features.setDescription(sf[index].getDescription());\r
- features.setStatus(sf[index].getStatus());\r
features.setType(sf[index].getType());\r
features.setFeatureGroup(sf[index].getFeatureGroup());\r
+ features.setScore(sf[index].getScore());\r
+ if(sf[index].links!=null)\r
+ {\r
+ for(int l=0; l<sf[index].links.size(); l++)\r
+ {\r
+ OtherData keyValue = new OtherData();\r
+ keyValue.setKey("LINK_"+l);\r
+ keyValue.setValue(sf[index].links.elementAt(l).toString());\r
+ features.addOtherData(keyValue);\r
+ }\r
+ }\r
+ if(sf[index].otherDetails!=null)\r
+ {\r
+ String key;\r
+ Enumeration keys = sf[index].otherDetails.keys();\r
+ while(keys.hasMoreElements())\r
+ {\r
+ key = keys.nextElement().toString();\r
+ OtherData keyValue = new OtherData();\r
+ keyValue.setKey( key );\r
+ keyValue.setValue(\r
+ sf[index].otherDetails.get(key).toString());\r
+ features.addOtherData(keyValue);\r
+ }\r
+ }\r
+\r
jseq.addFeatures(features);\r
index ++;\r
}\r
pdb.setId(entry.getId());\r
pdb.setType(entry.getType());\r
\r
+ if(entry.getFile()!=null)\r
+ {\r
+ if(pdbfiles==null)\r
+ pdbfiles = new Vector();\r
+\r
+\r
+ if(!pdbfiles.contains(entry.getId()))\r
+ {\r
+ pdbfiles.addElement(entry.getId());\r
+ try\r
+ {\r
+ File file = new File(entry.getFile());\r
+ if(file.exists())\r
+ {\r
+ byte[] data = new byte[ (int) file.length()];\r
+ jout.putNextEntry(new JarEntry(entry.getId()));\r
+ DataInputStream dis = new DataInputStream(new\r
+ FileInputStream(file));\r
+ dis.readFully(data);\r
+\r
+ DataOutputStream dout = new DataOutputStream(jout);\r
+ dout.write(data, 0, data.length);\r
+ jout.closeEntry();\r
+ }\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+\r
+\r
if(entry.getProperty()!=null)\r
{\r
PdbentryItem item = new PdbentryItem();\r
\r
for (int i = 0; i < aa.length; i++)\r
{\r
+ Annotation an = new Annotation();\r
+\r
if (aa[i].label.equals("Quality") ||\r
aa[i].label.equals("Conservation") ||\r
aa[i].label.equals("Consensus"))\r
{\r
+ an.setLabel(aa[i].label);\r
+ an.setGraph(true);\r
+ vamsasSet.addAnnotation(an);\r
continue;\r
}\r
\r
- Annotation an = new Annotation();\r
+\r
an.setDescription(aa[i].description);\r
\r
if(aa[i].sequenceRef!=null)\r
{\r
an.setGraph(true);\r
an.setGraphType(aa[i].graph);\r
+ an.setGraphGroup(aa[i].graphGroup);\r
if(aa[i].getThreshold()!=null)\r
{\r
ThresholdLine line = new ThresholdLine();\r
ae.setPosition(a);\r
ae.setSecondaryStructure(aa[i].annotations[a].secondaryStructure +\r
"");\r
+\r
+ if(aa[i].annotations[a].colour!=java.awt.Color.black)\r
+ ae.setColour(aa[i].annotations[a].colour.getRGB());\r
+\r
an.addAnnotationElement(ae);\r
}\r
\r
groups[i].setDisplayText(sg.getDisplayText());\r
groups[i].setColourText(sg.getColourText());\r
\r
- for (int s = 0; s < sg.getSize(); s++)\r
+ for (int s = 0; s < sg.getSize(false); s++)\r
{\r
jalview.datamodel.Sequence seq = (jalview.datamodel.Sequence) sg.getSequenceAt(s);\r
int index = seqids.indexOf(seq);\r
\r
String [] renderOrder =\r
af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().renderOrder;\r
+\r
+ Vector settingsAdded = new Vector();\r
for(int ro=0; ro<renderOrder.length; ro++)\r
{\r
Setting setting = new Setting();\r
);\r
\r
fs.addSetting(setting);\r
+ settingsAdded.addElement(renderOrder[ro]);\r
+ }\r
\r
+ //Make sure we save none displayed feature settings\r
+ Enumeration en =\r
+ af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours.keys();\r
+ while(en.hasMoreElements())\r
+ {\r
+ String key = en.nextElement().toString();\r
+ if(settingsAdded.contains(key))\r
+ continue;\r
+\r
+ Setting setting = new Setting();\r
+ setting.setType(key);\r
+ setting.setColour(\r
+ af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().getColour(key).getRGB()\r
+ );\r
+\r
+ setting.setDisplay(false);\r
+\r
+ fs.addSetting(setting);\r
+ settingsAdded.addElement(key);\r
}\r
+\r
jms.setFeatureSettings(fs);\r
\r
}\r
\r
+ if(av.hasHiddenColumns)\r
+ {\r
+ for(int c=0; c<av.getColumnSelection().getHiddenColumns().size(); c++)\r
+ {\r
+ int [] region = (int[]) av.getColumnSelection().getHiddenColumns().elementAt(c);\r
+ HiddenColumns hc = new HiddenColumns();\r
+ hc.setStart(region[0]);\r
+ hc.setEnd(region[1]);\r
+ view.addHiddenColumns(hc);\r
+ }\r
+ }\r
+\r
jms.addViewport(view);\r
\r
\r
*/\r
public AlignFrame LoadJalviewAlign(String file)\r
{\r
-\r
jalview.gui.AlignFrame af = null;\r
-\r
try\r
{\r
//UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING\r
for (int i = 0; i < entryCount; i++)\r
{\r
jarentry = jin.getNextJarEntry();\r
+ }\r
\r
- }\r
-\r
-\r
- class NoDescIDResolver implements IDResolver\r
- {\r
- public Object resolve(String idref)\r
- {\r
- System.out.println(idref+" used");\r
- return null;\r
- }\r
- }\r
-\r
-\r
- if (jarentry != null)\r
+ if (jarentry != null && jarentry.getName().endsWith(".xml"))\r
{\r
InputStreamReader in = new InputStreamReader(jin, "UTF-8");\r
JalviewModel object = new JalviewModel();\r
unmar.setValidation(false);\r
object = (JalviewModel) unmar.unmarshal( in );\r
\r
- af = LoadFromObject(object);\r
+ af = LoadFromObject(object, file);\r
entryCount++;\r
}\r
+ else if (jarentry != null)\r
+ {\r
+ //Some other file here.\r
+ entryCount++;\r
+ }\r
}\r
while (jarentry != null);\r
}\r
catch(java.net.UnknownHostException ex)\r
{\r
+ if (Desktop.instance != null)\r
+ Desktop.instance.stopLoading();\r
+\r
ex.printStackTrace();\r
System.err.println("Couldn't locate Jalview XML file : " +\r
ex + "\n");\r
}\r
catch (Exception ex)\r
{\r
+ if (Desktop.instance != null)\r
+ Desktop.instance.stopLoading();\r
+\r
//Is Version 1 Jar file?\r
af = new Jalview2XML_V1().LoadJalviewAlign(file);\r
\r
if(af!=null)\r
{\r
- System.out.println("Successfuly loaded archive file");\r
+ System.out.println("Successfully loaded archive file");\r
return af;\r
}\r
ex.printStackTrace();\r
return af;\r
}\r
\r
- AlignFrame LoadFromObject(JalviewModel object)\r
+ String loadPDBFile(String file, String pdbId)\r
+ {\r
+ System.out.println("load file "+file);\r
+ try\r
+ {\r
+ JarInputStream jin = null;\r
+\r
+ if (file.startsWith("http://"))\r
+ {\r
+ jin = new JarInputStream(new URL(file).openStream());\r
+ }\r
+ else\r
+ {\r
+ jin = new JarInputStream(new FileInputStream(file));\r
+ }\r
+\r
+ JarEntry entry = null;\r
+ do\r
+ {\r
+ entry = jin.getNextJarEntry();\r
+ }\r
+ while (!entry.getName().equals(pdbId));\r
+\r
+ BufferedReader in = new BufferedReader(new InputStreamReader(jin));\r
+ File outFile = File.createTempFile("jalview_pdb", ".txt");\r
+ outFile.deleteOnExit();\r
+ PrintWriter out = new PrintWriter(new FileOutputStream(outFile));\r
+ String data;\r
+\r
+ while ( (data = in.readLine()) != null)\r
+ {\r
+ out.println(data);\r
+ }\r
+ out.close();\r
+ return outFile.getAbsolutePath();\r
+\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+\r
+ AlignFrame LoadFromObject(JalviewModel object, String file)\r
{\r
Vector seqids = new Vector();\r
SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);\r
\r
//////////////////////////////////\r
//LOAD SEQUENCES\r
+ Vector hiddenSeqs = null;\r
jalview.datamodel.Sequence[] jseqs = new jalview.datamodel.Sequence[vamsasSeq.length];\r
JSeq[] JSEQ = object.getJalviewModelSequence().getJSeq();\r
for (int i = 0; i < vamsasSeq.length; i++)\r
vamsasSeq[i].getSequence());\r
jseqs[i].setDescription( vamsasSeq[i].getDescription() );\r
\r
+ if(JSEQ[i].getHidden())\r
+ {\r
+ if(hiddenSeqs == null)\r
+ hiddenSeqs = new Vector();\r
+ hiddenSeqs.addElement(jseqs[i]);\r
+ }\r
jseqs[i].setStart(JSEQ[i].getStart());\r
jseqs[i].setEnd(JSEQ[i].getEnd());\r
jseqs[i].setColor(new java.awt.Color(JSEQ[i].getColour()));\r
al.setDataset(null);\r
/////////////////////////////////\r
\r
+\r
+ Hashtable pdbloaded = new Hashtable();\r
for (int i = 0; i < vamsasSeq.length; i++)\r
{\r
if (JSEQ[i].getFeaturesCount() > 0)\r
features[f].getBegin(), features[f].getEnd(),\r
features[f].getFeatureGroup());\r
\r
+ sf.setScore(features[f].getScore());\r
+ for(int od=0; od<features[f].getOtherDataCount(); od++)\r
+ {\r
+ OtherData keyValue = features[f].getOtherData(od);\r
+ if(keyValue.getKey().startsWith("LINK"))\r
+ sf.addLink(keyValue.getValue());\r
+ else\r
+ sf.setValue(keyValue.getKey(), keyValue.getValue());\r
+\r
+ }\r
+\r
al.getSequenceAt(i).getDatasetSequence().addSequenceFeature(sf);\r
}\r
}\r
jalview.datamodel.PDBEntry entry = new jalview.datamodel.PDBEntry();\r
entry.setId(ids[p].getId());\r
entry.setType(ids[p].getType());\r
+ if (ids[p].getFile() != null)\r
+ {\r
+ if (!pdbloaded.containsKey(ids[p].getFile()))\r
+ {\r
+ String tmppdb = loadPDBFile(file, ids[p].getId());\r
+ entry.setFile(tmppdb);\r
+ pdbloaded.put(ids[p].getId(), tmppdb);\r
+ }\r
+ else\r
+ entry.setFile(pdbloaded.get(ids[p].getId()).toString());\r
+ }\r
+\r
al.getSequenceAt(i).getDatasetSequence().addPDBId(entry);\r
}\r
+ }\r
+ if(vamsasSeq[i].getDBRefCount()>0)\r
+ {\r
+ for(int d=0; d<vamsasSeq[i].getDBRefCount(); d++)\r
+ {\r
+ jalview.datamodel.DBRefEntry entry =\r
+ new jalview.datamodel.DBRefEntry(\r
+ vamsasSeq[i].getDBRef(d).getSource(),\r
+ vamsasSeq[i].getDBRef(d).getVersion(),\r
+ vamsasSeq[i].getDBRef(d).getAccessionId()\r
+ );\r
+ al.getSequenceAt(i).getDatasetSequence().addDBRef(entry);\r
+ }\r
\r
}\r
}\r
\r
+\r
+\r
/////////////////////////////////\r
//////////////////////////////////\r
//LOAD ANNOTATIONS\r
+ boolean hideQuality = true,\r
+ hideConservation = true,\r
+ hideConsensus = true;\r
+\r
if (vamsasSet.getAnnotation() != null)\r
{\r
Annotation[] an = vamsasSet.getAnnotation();\r
\r
for (int i = 0; i < an.length; i++)\r
{\r
+ if (an[i].getLabel().equals("Quality"))\r
+ {\r
+ hideQuality = false;\r
+ continue;\r
+ }\r
+ else if(an[i].getLabel().equals("Conservation"))\r
+ {\r
+ hideConservation = false;\r
+ continue;\r
+ }\r
+ else if(an[i].getLabel().equals("Consensus"))\r
+ {\r
+ hideConsensus = false;\r
+ continue;\r
+ }\r
+\r
AnnotationElement[] ae = an[i].getAnnotationElement();\r
jalview.datamodel.Annotation[] anot = new jalview.datamodel.Annotation[al.getWidth()];\r
\r
ae[aa].getDescription(),\r
ae[aa].getSecondaryStructure().length()==0?' ':ae[aa].getSecondaryStructure().charAt(0),\r
ae[aa].getValue());\r
+ anot[ae[aa].getPosition()].colour = new java.awt.Color( ae[aa].getColour() );\r
}\r
\r
jalview.datamodel.AlignmentAnnotation jaa = null;\r
an[i].getDescription(), anot, 0, 0,\r
an[i].getGraphType());\r
\r
+ jaa.graphGroup = an[i].getGraphGroup();\r
+\r
if (an[i].getThresholdLine() != null)\r
{\r
jaa.setThreshold(new jalview.datamodel.GraphLine(\r
}\r
\r
\r
- /////////////////////////////////\r
- // LOAD VIEWPORT\r
- Viewport[] views = jms.getViewport();\r
- Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER\r
-\r
- AlignFrame af = new AlignFrame(al);\r
-\r
-\r
// af.changeColour() );\r
/////////////////////////\r
//LOAD GROUPS\r
if (groups[i].getConsThreshold() != 0)\r
{\r
jalview.analysis.Conservation c = new jalview.analysis.Conservation("All",\r
- ResidueProperties.propHash, 3, sg.sequences, 0,\r
+ ResidueProperties.propHash, 3, sg.getSequences(false), 0,\r
sg.getWidth() - 1);\r
c.calculate();\r
c.verdict(false, 25);\r
}\r
\r
\r
+ /////////////////////////////////\r
+ // LOAD VIEWPORT\r
+ Viewport[] views = jms.getViewport();\r
+ Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER\r
+\r
+\r
+ AlignFrame af = new AlignFrame(al);\r
+\r
+ if(hiddenSeqs!=null)\r
+ {\r
+ for(int s=0; s<JSEQ.length; s++)\r
+ {\r
+ for(int r=0; r<JSEQ[s].getHiddenSequencesCount(); r++)\r
+ {\r
+ al.getSequenceAt(s).addHiddenSequence(\r
+ al.getSequenceAt( JSEQ[s].getHiddenSequences(r) )\r
+ );\r
+ }\r
+ }\r
+\r
+ for(int s=0; s<hiddenSeqs.size(); s++)\r
+ {\r
+ af.viewport.hideSequence(\r
+ (jalview.datamodel.SequenceI)hiddenSeqs.elementAt(s));\r
+ }\r
+ }\r
+\r
+\r
+ if(hideConsensus || hideQuality || hideConservation)\r
+ {\r
+ int hSize = al.getAlignmentAnnotation().length;\r
+ for (int h = 0; h < hSize; h++)\r
+ {\r
+ if (\r
+ (hideConsensus &&\r
+ al.getAlignmentAnnotation()[h].label.equals("Consensus"))\r
+ ||\r
+ (hideQuality &&\r
+ al.getAlignmentAnnotation()[h].label.equals("Quality"))\r
+ ||\r
+ (hideConservation &&\r
+ al.getAlignmentAnnotation()[h].label.equals("Conservation")))\r
+ {\r
+ al.deleteAnnotation(al.getAlignmentAnnotation()[h]);\r
+ hSize--;\r
+ h--;\r
+ }\r
+ }\r
+ af.alignPanel.adjustAnnotationHeight();\r
+ }\r
\r
af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),\r
view.getHeight());\r
af.viewport.setWrapAlignment(view.getWrapAlignment());\r
af.wrapMenuItem.setSelected(view.getWrapAlignment());\r
\r
- if (view.getWrapAlignment())\r
- {\r
- af.alignPanel.setWrapAlignment(view.getWrapAlignment());\r
- }\r
- else\r
- {\r
- af.annotationPanelMenuItem.setState(view.getShowAnnotation());\r
- af.viewport.setShowAnnotation(view.getShowAnnotation());\r
- af.alignPanel.setAnnotationVisible(view.getShowAnnotation());\r
- }\r
+ af.alignPanel.setWrapAlignment(view.getWrapAlignment());\r
+\r
+ af.annotationPanelMenuItem.setState(view.getShowAnnotation());\r
+ af.viewport.setShowAnnotation(view.getShowAnnotation());\r
+ af.alignPanel.setAnnotationVisible(view.getShowAnnotation());\r
\r
af.viewport.setShowBoxes(view.getShowBoxes());\r
af.viewBoxesMenuItem.setSelected(view.getShowBoxes());\r
af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().renderOrder = renderOrder;\r
}\r
\r
+ if (view.getHiddenColumnsCount() > 0)\r
+ {\r
+ for (int c = 0; c < view.getHiddenColumnsCount(); c++)\r
+ {\r
+ af.viewport.hideColumns(\r
+ view.getHiddenColumns(c).getStart(),\r
+ view.getHiddenColumns(c).getEnd()+1\r
+ );\r
+ }\r
+ }\r
+\r
\r
Desktop.addInternalFrame(af, view.getTitle(),\r
view.getWidth(), view.getHeight());\r