Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.gui

File Jalview2XML_V1.java

 

Coverage histogram

../../img/srcFileCovDistChart0.png
56% of files have more coverage

Code metrics

76
172
7
1
513
387
49
0.28
24.57
7
7

Classes

Class Line # Actions
Jalview2XML_V1 62 172 49 255
0.00%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
7    * Jalview is free software: you can redistribute it and/or
8    * modify it under the terms of the GNU General Public License
9    * as published by the Free Software Foundation, either version 3
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21    package jalview.gui;
22   
23    import jalview.analysis.Conservation;
24    import jalview.binding.Annotation;
25    import jalview.binding.AnnotationElement;
26    import jalview.binding.Features;
27    import jalview.binding.JGroup;
28    import jalview.binding.JSeq;
29    import jalview.binding.JalviewModel;
30    import jalview.binding.JalviewModelSequence;
31    import jalview.binding.Pdbids;
32    import jalview.binding.Sequence;
33    import jalview.binding.SequenceSet;
34    import jalview.binding.Setting;
35    import jalview.binding.Tree;
36    import jalview.binding.UserColours;
37    import jalview.binding.Viewport;
38    import jalview.datamodel.PDBEntry;
39    import jalview.datamodel.SequenceFeature;
40    import jalview.io.FileFormat;
41    import jalview.schemes.ColourSchemeI;
42    import jalview.schemes.ColourSchemeProperty;
43    import jalview.structure.StructureSelectionManager;
44    import jalview.util.MessageManager;
45    import jalview.util.jarInputStreamProvider;
46    import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
47   
48    import java.io.InputStreamReader;
49    import java.io.Reader;
50    import java.net.UnknownHostException;
51    import java.util.Hashtable;
52    import java.util.Vector;
53    import java.util.jar.JarEntry;
54    import java.util.jar.JarInputStream;
55   
56    /**
57    * DOCUMENT ME!
58    *
59    * @author $author$
60    * @version $Revision$
61    */
 
62    public class Jalview2XML_V1
63    {
64    boolean raiseGUI = true;
65   
 
66  0 toggle public Jalview2XML_V1()
67    {
68   
69    };
70   
 
71  0 toggle public Jalview2XML_V1(boolean raiseGUI)
72    {
73  0 this.raiseGUI = raiseGUI;
74    };
75   
 
76  0 toggle jalview.schemes.UserColourScheme GetUserColourScheme(
77    JalviewModelSequence jms, String id)
78    {
79  0 UserColours[] uc = jms.getUserColours();
80  0 UserColours colours = null;
81   
82  0 for (int i = 0; i < uc.length; i++)
83    {
84  0 if (uc[i].getId().equals(id))
85    {
86  0 colours = uc[i];
87   
88  0 break;
89    }
90    }
91   
92  0 int csize = colours.getUserColourScheme().getColourCount();
93  0 java.awt.Color[] newColours = new java.awt.Color[csize];
94   
95  0 for (int i = 0; i < csize; i++)
96    {
97  0 newColours[i] = new java.awt.Color(Integer.parseInt(
98    colours.getUserColourScheme().getColour(i).getRGB(), 16));
99    }
100   
101  0 return new jalview.schemes.UserColourScheme(newColours);
102    }
103   
104    /**
105    * DOCUMENT ME!
106    *
107    * @param file
108    * DOCUMENT ME!
109    */
 
110  0 toggle public AlignFrame LoadJalviewAlign(final jarInputStreamProvider jprovider)
111    {
112  0 final String file = jprovider.getFilename();
113  0 jalview.gui.AlignFrame af = null;
114   
115  0 try
116    {
117  0 JarInputStream jin = null;
118  0 JarEntry jarentry = null;
119  0 int entryCount = 1;
120   
121  0 do
122    {
123  0 jin = jprovider.getJarInputStream();
124   
125  0 for (int i = 0; i < entryCount; i++)
126    {
127  0 jarentry = jin.getNextJarEntry();
128    }
129   
130  0 if (jarentry != null)
131    {
132  0 entryCount++;
133  0 if (jarentry.getName().endsWith(".xml"))
134    {
135  0 Reader in = new InputStreamReader(jin, "UTF-8");
136  0 JalviewModel object = new JalviewModel();
137   
138  0 object = object.unmarshal(in);
139   
140  0 af = LoadFromObject(object, file);
141    }
142    }
143  0 jin.close();
144  0 } while (jarentry != null);
145    } catch (final UnknownHostException ex)
146    {
147  0 ex.printStackTrace();
148  0 if (raiseGUI)
149    {
150  0 javax.swing.SwingUtilities.invokeLater(new Runnable()
151    {
 
152  0 toggle @Override
153    public void run()
154    {
155   
156  0 System.err.println(
157    "Couldn't locate Jalview XML file : " + ex + "\n");
158  0 JvOptionPane.showInternalMessageDialog(Desktop.desktop,
159    MessageManager.formatMessage("label.couldnt_locate",
160    new String[]
161    { file }),
162    MessageManager.getString("label.url_not_found"),
163    JvOptionPane.WARNING_MESSAGE);
164    }
165    });
166    }
167  0 ;
168    } catch (Exception ex)
169    {
170  0 System.err.println("Exception whilst loading jalview XML file : ");
171  0 ex.printStackTrace();
172  0 if (raiseGUI)
173    {
174  0 javax.swing.SwingUtilities.invokeLater(new Runnable()
175    {
 
176  0 toggle @Override
177    public void run()
178    {
179   
180  0 JvOptionPane.showInternalMessageDialog(Desktop.desktop,
181    MessageManager.formatMessage(
182    "label.error_loading_file_params", new String[]
183    { file }),
184    MessageManager
185    .getString("label.error_loading_jalview_file"),
186    JvOptionPane.WARNING_MESSAGE);
187    }
188    });
189    }
190    }
191   
192  0 return af;
193    }
194   
 
195  0 toggle AlignFrame LoadFromObject(JalviewModel object, String file)
196    {
197  0 Vector seqids = new Vector();
198  0 SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);
199  0 Sequence[] vamsasSeq = vamsasSet.getSequence();
200   
201  0 JalviewModelSequence jms = object.getJalviewModelSequence();
202   
203    // ////////////////////////////////
204    // LOAD SEQUENCES
205  0 jalview.datamodel.Sequence[] jseqs = new jalview.datamodel.Sequence[vamsasSeq.length];
206  0 JSeq[] JSEQ = object.getJalviewModelSequence().getJSeq();
207  0 for (int i = 0; i < vamsasSeq.length; i++)
208    {
209  0 jseqs[i] = new jalview.datamodel.Sequence(vamsasSeq[i].getName(),
210    vamsasSeq[i].getSequence());
211  0 jseqs[i].setStart(JSEQ[i].getStart());
212  0 jseqs[i].setEnd(JSEQ[i].getEnd());
213  0 seqids.add(jseqs[i]);
214    }
215   
216    // /SequenceFeatures are added to the DatasetSequence,
217    // so we must create the dataset before loading features
218    // ///////////////////////////////
219  0 jalview.datamodel.Alignment al = new jalview.datamodel.Alignment(jseqs);
220  0 al.setDataset(null);
221    // ///////////////////////////////
222   
223  0 for (int i = 0; i < vamsasSeq.length; i++)
224    {
225  0 if (JSEQ[i].getFeaturesCount() > 0)
226    {
227  0 Features[] features = JSEQ[i].getFeatures();
228  0 for (int f = 0; f < features.length; f++)
229    {
230  0 SequenceFeature sf = new SequenceFeature(features[f].getType(),
231    features[f].getDescription(), features[f].getBegin(),
232    features[f].getEnd(), null);
233  0 sf.setStatus(features[f].getStatus());
234  0 al.getSequenceAt(i).getDatasetSequence().addSequenceFeature(sf);
235    }
236    }
237  0 if (JSEQ[i].getPdbidsCount() > 0)
238    {
239  0 Pdbids[] ids = JSEQ[i].getPdbids();
240  0 for (int p = 0; p < ids.length; p++)
241    {
242  0 jalview.datamodel.PDBEntry entry = new jalview.datamodel.PDBEntry();
243  0 entry.setId(ids[p].getId());
244  0 if (ids[p].getType() != null)
245    {
246  0 if (ids[p].getType().equalsIgnoreCase("PDB"))
247    {
248  0 entry.setType(PDBEntry.Type.PDB);
249    }
250    else
251    {
252  0 entry.setType(PDBEntry.Type.FILE);
253    }
254    }
255  0 al.getSequenceAt(i).getDatasetSequence().addPDBId(entry);
256  0 StructureSelectionManager
257    .getStructureSelectionManager(Desktop.instance)
258    .registerPDBEntry(entry);
259    }
260   
261    }
262    }
263   
264    // ///////////////////////////////
265    // ////////////////////////////////
266    // LOAD ANNOTATIONS
267  0 if (vamsasSet.getAnnotation() != null)
268    {
269  0 Annotation[] an = vamsasSet.getAnnotation();
270   
271  0 for (int i = 0; i < an.length; i++)
272    {
273  0 AnnotationElement[] ae = an[i].getAnnotationElement();
274  0 jalview.datamodel.Annotation[] anot = new jalview.datamodel.Annotation[al
275    .getWidth()];
276   
277  0 for (int aa = 0; aa < ae.length; aa++)
278    {
279  0 anot[ae[aa].getPosition()] = new jalview.datamodel.Annotation(
280    ae[aa].getDisplayCharacter(), ae[aa].getDescription(),
281    ae[aa].getSecondaryStructure().charAt(0),
282    ae[aa].getValue());
283    }
284   
285  0 jalview.datamodel.AlignmentAnnotation jaa = null;
286   
287  0 if (an[i].getGraph())
288    {
289  0 jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),
290    an[i].getDescription(), anot, 0, 0,
291    jalview.datamodel.AlignmentAnnotation.BAR_GRAPH);
292    }
293    else
294    {
295  0 jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),
296    an[i].getDescription(), anot);
297    }
298   
299  0 al.addAnnotation(jaa);
300    }
301    }
302   
303    // ///////////////////////////////
304    // LOAD VIEWPORT
305  0 Viewport[] views = jms.getViewport();
306  0 Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER
307   
308  0 AlignFrame af = new AlignFrame(al, view.getWidth(), view.getHeight());
309   
310  0 af.setFileName(file, FileFormat.Jalview);
311   
312  0 for (int i = 0; i < JSEQ.length; i++)
313    {
314  0 af.viewport.setSequenceColour(
315    af.viewport.getAlignment().getSequenceAt(i),
316    new java.awt.Color(JSEQ[i].getColour()));
317    }
318   
319    // af.changeColour() );
320    // ///////////////////////
321    // LOAD GROUPS
322  0 if (jms.getJGroupCount() > 0)
323    {
324  0 JGroup[] groups = jms.getJGroup();
325   
326  0 for (int i = 0; i < groups.length; i++)
327    {
328  0 ColourSchemeI cs = null;
329   
330  0 if (groups[i].getColour() != null)
331    {
332  0 if (groups[i].getColour().startsWith("ucs"))
333    {
334  0 cs = GetUserColourScheme(jms, groups[i].getColour());
335    }
336    else
337    {
338  0 cs = ColourSchemeProperty.getColourScheme(al,
339    groups[i].getColour());
340    }
341    }
342  0 int pidThreshold = groups[i].getPidThreshold();
343   
344  0 Vector seqs = new Vector();
345  0 int[] ids = groups[i].getSeq();
346   
347  0 for (int s = 0; s < ids.length; s++)
348    {
349  0 seqs.addElement(seqids.elementAt(ids[s]));
350    }
351   
352  0 jalview.datamodel.SequenceGroup sg = new jalview.datamodel.SequenceGroup(
353    seqs, groups[i].getName(), cs, groups[i].getDisplayBoxes(),
354    groups[i].getDisplayText(), groups[i].getColourText(),
355    groups[i].getStart(), groups[i].getEnd());
356  0 sg.getGroupColourScheme().setThreshold(pidThreshold, true);
357   
358  0 sg.setOutlineColour(
359    new java.awt.Color(groups[i].getOutlineColour()));
360   
361  0 if (groups[i].getConsThreshold() != 0)
362    {
363  0 Conservation c = new Conservation("All", sg.getSequences(null), 0,
364    sg.getWidth() - 1);
365  0 c.calculate();
366  0 c.verdict(false, 25);
367  0 sg.cs.setConservation(c);
368    }
369   
370  0 al.addGroup(sg);
371    }
372    }
373   
374  0 af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),
375    view.getHeight());
376  0 af.viewport.getRanges().setStartRes(view.getStartRes());
377    // startSeq set in af.alignPanel.updateLayout below
378  0 af.viewport.setShowAnnotation(view.getShowAnnotation());
379  0 af.viewport.setAbovePIDThreshold(view.getPidSelected());
380  0 af.viewport.setColourText(view.getShowColourText());
381  0 af.viewport.setConservationSelected(view.getConservationSelected());
382  0 af.viewport.setShowJVSuffix(view.getShowFullId());
383  0 af.viewport.setFont(new java.awt.Font(view.getFontName(),
384    view.getFontStyle(), view.getFontSize()), true);
385   
386  0 af.viewport.setRenderGaps(view.getRenderGaps());
387  0 af.viewport.setWrapAlignment(view.getWrapAlignment());
388   
389  0 af.viewport.setShowAnnotation(view.isShowAnnotation());
390  0 af.viewport.setShowBoxes(view.getShowBoxes());
391  0 af.viewport.setShowText(view.getShowText());
392   
393  0 ColourSchemeI cs = null;
394   
395  0 if (view.getBgColour() != null)
396    {
397  0 if (view.getBgColour().startsWith("ucs"))
398    {
399  0 cs = GetUserColourScheme(jms, view.getBgColour());
400    }
401    else
402    {
403  0 cs = ColourSchemeProperty.getColourScheme(al, view.getBgColour());
404    }
405   
406    // if (cs != null)
407    // {
408    // cs.setThreshold(view.getPidThreshold(), true);
409    // cs.setConsensus(af.viewport.getSequenceConsensusHash());
410    // }
411    }
412   
413  0 af.viewport.getResidueShading().setThreshold(view.getPidThreshold(),
414    true);
415  0 af.viewport.getResidueShading()
416    .setConsensus(af.viewport.getSequenceConsensusHash());
417  0 af.viewport.setColourAppliesToAllGroups(false);
418  0 af.alignPanel.updateLayout();
419  0 af.changeColour(cs);
420  0 if (view.getConservationSelected() && cs != null)
421    {
422  0 af.viewport.getResidueShading()
423    .setConservationInc(view.getConsThreshold());
424    }
425   
426  0 af.viewport.setColourAppliesToAllGroups(true);
427  0 af.viewport.setShowSequenceFeatures(view.getShowSequenceFeatures());
428   
429  0 if (jms.getFeatureSettings() != null)
430    {
431  0 Hashtable featuresDisplayed = new Hashtable();
432  0 Hashtable featureColours = new Hashtable();
433  0 String[] renderOrder = new String[jms.getFeatureSettings()
434    .getSettingCount()];
435  0 for (int fs = 0; fs < jms.getFeatureSettings()
436    .getSettingCount(); fs++)
437    {
438  0 Setting setting = jms.getFeatureSettings().getSetting(fs);
439   
440  0 featureColours.put(setting.getType(),
441    new java.awt.Color(setting.getColour()));
442   
443  0 renderOrder[fs] = setting.getType();
444   
445  0 if (setting.getDisplay())
446    {
447  0 featuresDisplayed.put(setting.getType(),
448    new Integer(setting.getColour()));
449    }
450    }
451  0 FeatureRendererSettings frs = new FeatureRendererSettings(renderOrder,
452    new Hashtable(), featureColours, 1.0f, null);
453  0 af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()
454    .transferSettings(frs);
455    }
456   
457  0 af.setMenusFromViewport(af.viewport);
458   
459  0 Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(),
460    view.getHeight());
461   
462    // LOAD TREES
463    // /////////////////////////////////////
464  0 if (jms.getTreeCount() > 0)
465    {
466  0 try
467    {
468  0 for (int t = 0; t < jms.getTreeCount(); t++)
469    {
470   
471  0 Tree tree = jms.getTree(t);
472   
473  0 TreePanel tp = af.showNewickTree(
474    new jalview.io.NewickFile(tree.getNewick()),
475    tree.getTitle(), tree.getWidth(), tree.getHeight(),
476    tree.getXpos(), tree.getYpos());
477   
478  0 tp.fitToWindow.setState(tree.getFitToWindow());
479  0 tp.fitToWindow_actionPerformed(null);
480   
481  0 if (tree.getFontName() != null)
482    {
483  0 tp.setTreeFont(new java.awt.Font(tree.getFontName(),
484    tree.getFontStyle(), tree.getFontSize()));
485    }
486    else
487    {
488  0 tp.setTreeFont(new java.awt.Font(view.getFontName(),
489    view.getFontStyle(), tree.getFontSize()));
490    }
491   
492  0 tp.showPlaceholders(tree.getMarkUnlinked());
493  0 tp.showBootstrap(tree.getShowBootstrap());
494  0 tp.showDistances(tree.getShowDistances());
495   
496  0 tp.treeCanvas.threshold = tree.getThreshold();
497   
498  0 if (tree.getCurrentTree())
499    {
500  0 af.viewport.setCurrentTree(tp.getTree());
501    }
502    }
503   
504    } catch (Exception ex)
505    {
506  0 ex.printStackTrace();
507    }
508   
509    }
510   
511  0 return af;
512    }
513    }