Skip to content

Commit 75c7283

Browse files
committed
Adapt SymmetryGUI to latest changes
1 parent 914632c commit 75c7283

File tree

10 files changed

+204
-193
lines changed

10 files changed

+204
-193
lines changed

biojava-structure-gui/src/main/java/demo/DemoCeSymm.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package demo;
2222

2323
import java.io.IOException;
24+
2425
import org.biojava.nbio.structure.Atom;
2526
import org.biojava.nbio.structure.Structure;
2627
import org.biojava.nbio.structure.StructureException;
@@ -32,6 +33,7 @@
3233
import org.biojava.nbio.structure.symmetry.internal.CESymmParameters.RefineMethod;
3334
import org.biojava.nbio.structure.symmetry.internal.CESymmParameters.SymmetryType;
3435
import org.biojava.nbio.structure.symmetry.internal.CeSymm;
36+
import org.biojava.nbio.structure.symmetry.internal.CeSymmResult;
3537

3638
/**
3739
* Quick demo of how to call CE-Symm programmatically.
@@ -78,21 +80,19 @@ public static void main(String[] args)
7880
Structure s = cache.getStructure(name);
7981
Atom[] atoms = StructureTools.getRepresentativeAtomArray(s);
8082

81-
CeSymm ceSymm = new CeSymm();
82-
8383
//Choose some parameters
84-
CESymmParameters params = ceSymm.getParameters();
84+
CESymmParameters params = new CESymmParameters();
8585
params.setRefineMethod(RefineMethod.SINGLE);
8686
params.setSymmType(SymmetryType.AUTO);
8787
params.setOptimization(true);
8888
params.setSymmLevels(0);
8989
params.setSSEThreshold(2);
9090

9191
//Run the alignment
92-
MultipleAlignment symmetry = ceSymm.analyze(atoms, params);
92+
CeSymmResult result = CeSymm.analyze(atoms, params);
9393

9494
//Display the results in jmol
95-
SymmetryDisplay.display(symmetry, ceSymm.getSymmetryAxes());
95+
SymmetryDisplay.display(result);
9696
}
9797

9898
}

biojava-structure-gui/src/main/java/demo/DemoMultipleMC.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828

2929
import org.biojava.nbio.structure.Atom;
3030
import org.biojava.nbio.structure.StructureException;
31+
import org.biojava.nbio.structure.StructureIdentifier;
3132
import org.biojava.nbio.structure.align.StructureAlignment;
3233
import org.biojava.nbio.structure.align.ce.CeMain;
34+
import org.biojava.nbio.structure.align.client.StructureName;
3335
import org.biojava.nbio.structure.align.gui.MultipleAlignmentDisplay;
3436
import org.biojava.nbio.structure.align.multiple.MultipleAlignment;
3537
import org.biojava.nbio.structure.align.multiple.mc.MultipleMcMain;
@@ -95,8 +97,11 @@ public static void main(String[] args) throws IOException, StructureException, I
9597
//Load the CA atoms of the structures
9698
AtomCache cache = new AtomCache();
9799
List<Atom[]> atomArrays = new ArrayList<Atom[]>();
100+
List<StructureIdentifier> ids = new ArrayList<StructureIdentifier>();
98101
for (String name:names) {
99-
atomArrays.add(cache.getAtoms(name));
102+
StructureIdentifier id = new StructureName(name);
103+
ids.add(id);
104+
atomArrays.add(cache.getAtoms(id));
100105
}
101106

102107
//Here the multiple structural alignment algorithm comes in place to generate the alignment object
@@ -108,7 +113,7 @@ public static void main(String[] args) throws IOException, StructureException, I
108113
params.setGapExtension(20.0);
109114

110115
MultipleAlignment result = algorithm.align(atomArrays);
111-
result.getEnsemble().setStructureNames(names);
116+
result.getEnsemble().setStructureIdentifiers(ids);
112117

113118
//Information about the alignment
114119
result.getEnsemble().setAlgorithmName(algorithm.getAlgorithmName());

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/symmetry/gui/SymmetryCalc.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.biojava.nbio.structure.align.multiple.MultipleAlignment;
3434
import org.biojava.nbio.structure.symmetry.internal.CESymmParameters;
3535
import org.biojava.nbio.structure.symmetry.internal.CeSymm;
36+
import org.biojava.nbio.structure.symmetry.internal.CeSymmResult;
3637
import org.slf4j.Logger;
3738
import org.slf4j.LoggerFactory;
3839

@@ -69,23 +70,22 @@ public SymmetryCalc(SymmetryGui p, Structure s, StructureIdentifier n) {
6970
public void run() {
7071

7172
//The structure has been downloaded, now calculate the alignment ...
72-
CeSymm ceSymm = parent.getSymmetryAlgorithm();
73-
CESymmParameters params = ceSymm.getParameters();
73+
CESymmParameters params = parent.getParameters();
7474

7575
try {
7676

7777
Atom[] atoms = StructureTools.getRepresentativeAtomArray(structure);
7878

79-
MultipleAlignment msa = ceSymm.analyze(atoms);
79+
CeSymmResult result = CeSymm.analyze(atoms, params);
8080

8181
List<StructureIdentifier> names = new ArrayList<StructureIdentifier>();
82-
for (int su=0; su<msa.size(); su++){
82+
for (int su=0; su<result.getSymmOrder(); su++){
8383
names.add(name);
8484
}
85-
msa.getEnsemble().setStructureIdentifiers(names);
85+
result.getMultipleAlignment().getEnsemble().setStructureIdentifiers(names);
8686

8787
MultipleAlignmentJmol jmol =
88-
SymmetryDisplay.display(msa, ceSymm.getSymmetryAxes());
88+
SymmetryDisplay.display(result);
8989
String title = jmol.getTitle();
9090

9191
if (params != null)

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/symmetry/gui/SymmetryDisplay.java

Lines changed: 31 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,20 @@
2727
import javax.swing.JMenuBar;
2828
import javax.swing.JMenuItem;
2929
import javax.vecmath.Matrix4d;
30+
3031
import org.biojava.nbio.structure.*;
3132
import org.biojava.nbio.structure.align.gui.MultipleAlignmentDisplay;
33+
import org.biojava.nbio.structure.align.gui.StructureAlignmentDisplay;
3234
import org.biojava.nbio.structure.align.gui.jmol.MultipleAlignmentJmol;
3335
import org.biojava.nbio.structure.align.multiple.MultipleAlignment;
3436
import org.biojava.nbio.structure.align.util.RotationAxis;
3537
import org.biojava.nbio.structure.symmetry.core.AxisAligner;
3638
import org.biojava.nbio.structure.symmetry.core.QuatSymmetryResults;
37-
import org.biojava.nbio.structure.symmetry.internal.SymmetryAxes;
39+
import org.biojava.nbio.structure.symmetry.internal.CeSymmResult;
3840
import org.biojava.nbio.structure.symmetry.jmolScript.JmolSymmetryScriptGenerator;
3941
import org.biojava.nbio.structure.symmetry.jmolScript.JmolSymmetryScriptGeneratorPointGroup;
4042
import org.biojava.nbio.structure.symmetry.utils.SymmetryTools;
43+
import org.jmol.util.Logger;
4144

4245
/**
4346
* Class that provides visualizations methods for symmetry alignments. Call the
@@ -86,64 +89,51 @@ public static MultipleAlignmentJmol displayFull(MultipleAlignment msa)
8689
* Displays a single structure in a cartoon representation with each
8790
* symmetric subunit colored differently.
8891
*
89-
* @param msa
90-
* the symmetry multiple alignment obtained from CeSymm
91-
* @param axes
92-
* symmetry axes
92+
* @param symmResult
93+
* the symmetry result obtained from CeSymm
9394
* @throws StructureException
9495
*/
95-
public static MultipleAlignmentJmol display(MultipleAlignment msa,
96-
SymmetryAxes axes) throws StructureException {
96+
public static MultipleAlignmentJmol display(CeSymmResult symmResult)
97+
throws StructureException {
9798

9899
MultipleAlignmentJmol jmol = null;
100+
MultipleAlignment msa = symmResult.getMultipleAlignment();
99101

100-
if (SymmetryTools.isRefined(msa)) {
102+
if (symmResult.isRefined()) {
101103
List<Atom[]> atoms = msa.getAtomArrays();
102104
jmol = new MultipleAlignmentJmol(msa, atoms);
103105
jmol.setTitle(jmol.getStructure().getPDBHeader().getTitle());
104-
addSymmetryMenu(jmol, axes);
105-
jmol.evalString(printPointGroupAxes(msa));
106-
jmol.evalString(printSymmetryAxes(msa, axes, false));
106+
addSymmetryMenu(jmol, symmResult);
107+
jmol.evalString(printPointGroupAxes(symmResult));
108+
jmol.evalString(printSymmetryAxes(symmResult, false));
107109
} else {
108-
// Show the optimal alignment if it was not refined
109-
jmol = MultipleAlignmentDisplay.display(msa);
110-
jmol.setColorByBlocks(true);
110+
// Show the optimal alignment only if it was not refined
111+
Logger.info("Showing optimal self-alignment");
112+
StructureAlignmentDisplay.display(symmResult.getSelfAlignment(),
113+
symmResult.getAtoms(), symmResult.getAtoms());
111114
}
112115

113116
return jmol;
114117
}
115118

116-
/**
117-
* Displays a single structure in a cartoon representation with each
118-
* symmetric subunit colored differently.
119-
*
120-
* @param msa
121-
* the symmetry multiple alignment obtained from CeSymm
122-
* @throws StructureException
123-
*/
124-
public static MultipleAlignmentJmol display(MultipleAlignment msa)
125-
throws StructureException {
126-
return display(msa, null);
127-
}
128-
129119
/**
130120
* Adds a Symmetry menu to the Jmol display, so that further symmetry
131121
* analysis can be triggered.
132122
*
133123
* @param jmol
134124
* parent jmol
135-
* @param axes
136-
* symmetry axes
125+
* @param symmResult
126+
* CeSymmResult
137127
*/
138128
private static void addSymmetryMenu(MultipleAlignmentJmol jmol,
139-
SymmetryAxes axes) {
129+
CeSymmResult symmResult) {
140130

141131
JMenuBar menubar = jmol.getFrame().getJMenuBar();
142132

143133
JMenu symm = new JMenu("Symmetry");
144134
symm.setMnemonic(KeyEvent.VK_S);
145135

146-
SymmetryListener li = new SymmetryListener(jmol, axes);
136+
SymmetryListener li = new SymmetryListener(jmol, symmResult);
147137

148138
JMenuItem subunits = new JMenuItem("Subunit Superposition");
149139
subunits.addActionListener(li);
@@ -152,6 +142,10 @@ private static void addSymmetryMenu(MultipleAlignmentJmol jmol,
152142
JMenuItem multiple = new JMenuItem("Multiple Structure Alignment");
153143
multiple.addActionListener(li);
154144
symm.add(multiple);
145+
146+
JMenuItem self = new JMenuItem("Optimal Self Alignment");
147+
self.addActionListener(li);
148+
symm.add(self);
155149

156150
JMenuItem pg = new JMenuItem("Point Group Symmetry");
157151
pg.addActionListener(li);
@@ -178,18 +172,17 @@ private static void addSymmetryMenu(MultipleAlignmentJmol jmol,
178172
* only print elementary axes if true
179173
* @return
180174
*/
181-
public static String printSymmetryAxes(MultipleAlignment msa,
182-
SymmetryAxes axes, boolean elementary) {
175+
public static String printSymmetryAxes(CeSymmResult symm, boolean elementary) {
183176

184177
int id = 0;
185178
String script = "";
186-
Atom[] atoms = msa.getAtomArrays().get(0);
179+
Atom[] atoms = symm.getAtoms();
187180

188181
List<Matrix4d> symmAxes = null;
189182
if (elementary) {
190-
symmAxes = axes.getElementaryAxes();
183+
symmAxes = symm.getAxes().getElementaryAxes();
191184
} else {
192-
symmAxes = axes.getSymmetryAxes();
185+
symmAxes = symm.getAxes().getSymmetryAxes();
193186
}
194187

195188
for (Matrix4d axis : symmAxes) {
@@ -209,10 +202,10 @@ public static String printSymmetryAxes(MultipleAlignment msa,
209202
* @param symm
210203
* @return
211204
*/
212-
public static String printPointGroupAxes(MultipleAlignment symm) {
205+
public static String printPointGroupAxes(CeSymmResult symm) {
213206

214207
QuatSymmetryResults gSymmetry = SymmetryTools
215-
.getQuaternarySymmetry(symm);
208+
.getQuaternarySymmetry(symm.getMultipleAlignment());
216209

217210
AxisAligner axes = AxisAligner.getInstance(gSymmetry);
218211

biojava-structure-gui/src/main/java/org/biojava/nbio/structure/symmetry/gui/SymmetryGui.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.biojava.nbio.structure.StructureException;
4242
import org.biojava.nbio.structure.StructureIdentifier;
4343
import org.biojava.nbio.structure.align.ce.AbstractUserArgumentProcessor;
44-
import org.biojava.nbio.structure.align.ce.ConfigStrucAligParams;
4544
import org.biojava.nbio.structure.align.gui.AlignmentCalculationRunnable;
4645
import org.biojava.nbio.structure.align.gui.MenuCreator;
4746
import org.biojava.nbio.structure.align.gui.ParameterGUI;
@@ -51,6 +50,7 @@
5150
import org.biojava.nbio.structure.gui.util.PDBUploadPanel;
5251
import org.biojava.nbio.structure.gui.util.ScopSelectPanel;
5352
import org.biojava.nbio.structure.gui.util.StructurePairSelector;
53+
import org.biojava.nbio.structure.symmetry.internal.CESymmParameters;
5454
import org.biojava.nbio.structure.symmetry.internal.CeSymm;
5555

5656
/**
@@ -67,7 +67,7 @@ public class SymmetryGui extends JFrame {
6767

6868
private final static long serialVersionUID = 0l;
6969

70-
private CeSymm ceSymm = new CeSymm();
70+
private CESymmParameters params = new CESymmParameters();
7171
private JButton abortB;
7272

7373
private SelectPDBPanel tab1 ;
@@ -244,13 +244,11 @@ public void actionPerformed(ActionEvent evt) {
244244
}
245245

246246
protected void configureParameters() {
247-
CeSymm algorithm = getSymmetryAlgorithm();
248247
System.out.println("configure parameters for " +
249-
algorithm.getAlgorithmName());
248+
CeSymm.algorithmName);
250249

251250
// show a new config GUI
252-
ConfigStrucAligParams params = algorithm.getParameters();
253-
new ParameterGUI(params, algorithm.getAlgorithmName());
251+
new ParameterGUI(params, CeSymm.algorithmName);
254252
}
255253

256254
public void cleanUp() {
@@ -328,8 +326,8 @@ private void abortCalc(){
328326
}
329327

330328

331-
public CeSymm getSymmetryAlgorithm() {
332-
return ceSymm;
329+
public CESymmParameters getParameters() {
330+
return params;
333331
}
334332

335333
}

0 commit comments

Comments
 (0)