Skip to content

Commit 74e3dd6

Browse files
authored
Merge pull request biojava#570 from sbliven/jmol-mmtf
Switch Jmol interaction to use MMTF
2 parents 3c3e018 + 306929f commit 74e3dd6

File tree

1 file changed

+42
-12
lines changed
  • biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol

1 file changed

+42
-12
lines changed

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/JmolPanel.java

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,33 @@
2424

2525
package org.biojava.nbio.structure.align.gui.jmol;
2626

27-
import org.biojava.nbio.structure.*;
27+
import java.awt.Color;
28+
import java.awt.Dimension;
29+
import java.awt.Graphics;
30+
import java.awt.Rectangle;
31+
import java.awt.event.ActionEvent;
32+
import java.awt.event.ActionListener;
33+
import java.io.BufferedInputStream;
34+
import java.io.IOException;
35+
import java.io.InputStream;
36+
import java.io.PipedInputStream;
37+
import java.io.PipedOutputStream;
38+
import java.text.DecimalFormat;
39+
import java.util.List;
40+
41+
import javax.swing.JComboBox;
42+
43+
import org.biojava.nbio.structure.Atom;
44+
import org.biojava.nbio.structure.Calc;
45+
import org.biojava.nbio.structure.Group;
46+
import org.biojava.nbio.structure.Structure;
47+
import org.biojava.nbio.structure.StructureTools;
2848
import org.biojava.nbio.structure.align.gui.JPrintPanel;
2949
import org.biojava.nbio.structure.domain.LocalProteinDomainParser;
3050
import org.biojava.nbio.structure.domain.pdp.Domain;
3151
import org.biojava.nbio.structure.domain.pdp.Segment;
3252
import org.biojava.nbio.structure.gui.util.color.ColorUtils;
53+
import org.biojava.nbio.structure.io.mmtf.MmtfActions;
3354
import org.biojava.nbio.structure.jama.Matrix;
3455
import org.biojava.nbio.structure.scop.ScopDatabase;
3556
import org.biojava.nbio.structure.scop.ScopDomain;
@@ -42,14 +63,6 @@
4263
import org.slf4j.Logger;
4364
import org.slf4j.LoggerFactory;
4465

45-
import javax.swing.*;
46-
47-
import java.awt.*;
48-
import java.awt.event.ActionEvent;
49-
import java.awt.event.ActionListener;
50-
import java.text.DecimalFormat;
51-
import java.util.List;
52-
5366

5467
public class JmolPanel
5568
extends JPrintPanel
@@ -114,11 +127,28 @@ public void executeCmd(String rasmolScript) {
114127
viewer.evalString(rasmolScript);
115128
}
116129

117-
public void setStructure(Structure s)
130+
public void setStructure(final Structure s)
118131
{
119132
this.structure = s;
120-
String serialized = s.toMMCIF();
121-
viewer.openStringInline(serialized);
133+
try (
134+
PipedOutputStream out = new PipedOutputStream();
135+
// Viewer requires a BufferedInputStream for reflection
136+
InputStream in = new BufferedInputStream(new PipedInputStream(out));
137+
) {
138+
new Thread((Runnable)() -> {
139+
try {
140+
MmtfActions.writeToOutputStream(s,out);
141+
} catch (Exception e) {
142+
logger.error("Error generating MMTF output for {}",
143+
s.getStructureIdentifier()==null ? s.getStructureIdentifier().getIdentifier() : s.getName(), e);
144+
}
145+
}).start();
146+
viewer.openReader(null, in);
147+
} catch (IOException e) {
148+
logger.error("Error transfering {} to Jmol",
149+
s.getStructureIdentifier()==null ? s.getStructureIdentifier().getIdentifier() : s.getName(), e);
150+
}
151+
122152
evalString("save STATE state_1");
123153
}
124154

0 commit comments

Comments
 (0)