git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3f136ac
)
JAL-1333 more refinements - deadlocks still possible with this version
author
j.procter@dundee.ac.uk
<jprocter@jims-mbp-2.dyn.lifesci.dundee.ac.uk>
Fri, 18 Jul 2014 12:35:06 +0000
(13:35 +0100)
committer
j.procter@dundee.ac.uk
<jprocter@jims-mbp-2.dyn.lifesci.dundee.ac.uk>
Fri, 18 Jul 2014 12:35:06 +0000
(13:35 +0100)
src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java
patch
|
blob
|
history
src/ext/edu/ucsf/rbvi/strucviz2/port/ListenerThreads.java
patch
|
blob
|
history
src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java
patch
|
blob
|
history
diff --git
a/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java
b/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java
index
a82a6fb
..
95ea0d7
100644
(file)
--- a/
src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java
+++ b/
src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java
@@
-627,7
+627,7
@@
public class ChimeraManager
}
return values;
}
}
return values;
}
-
+ private volatile boolean busy=false;
/**
* Send a command to Chimera.
*
/**
* Send a command to Chimera.
*
@@
-645,7
+645,13
@@
public class ChimeraManager
{
return null;
}
{
return null;
}
-
+ while (busy)
+ {
+ try {
+ Thread.sleep(25);
+ } catch (InterruptedException q) {};
+ }
+ busy=true;
chimeraListenerThreads.clearResponse(command);
String text = command.concat("\n");
// System.out.println("send command to chimera: " + text);
chimeraListenerThreads.clearResponse(command);
String text = command.concat("\n");
// System.out.println("send command to chimera: " + text);
@@
-661,13
+667,17
@@
public class ChimeraManager
logger.warn("Unable to execute command: " + text);
logger.warn("Exiting...");
clearOnChimeraExit();
logger.warn("Unable to execute command: " + text);
logger.warn("Exiting...");
clearOnChimeraExit();
+ busy=false;
return null;
}
if (!reply)
{
return null;
}
if (!reply)
{
+ busy=false;
return null;
}
return null;
}
- return chimeraListenerThreads.getResponse(command);
+ List<String> rsp = chimeraListenerThreads.getResponse(command);
+ busy=false;
+ return rsp;
}
public StructureManager getStructureManager()
}
public StructureManager getStructureManager()
diff --git
a/src/ext/edu/ucsf/rbvi/strucviz2/port/ListenerThreads.java
b/src/ext/edu/ucsf/rbvi/strucviz2/port/ListenerThreads.java
index
8391e49
..
dee027b
100644
(file)
--- a/
src/ext/edu/ucsf/rbvi/strucviz2/port/ListenerThreads.java
+++ b/
src/ext/edu/ucsf/rbvi/strucviz2/port/ListenerThreads.java
@@
-186,7
+186,8
@@
public class ListenerThreads extends Thread {
public void run() {
try {
public void run() {
try {
-// structureManager.chimeraSelectionChanged();
+ logger.info("Responding to chimera selection");
+ structureManager.chimeraSelectionChanged();
} catch (Exception e) {
logger.warn("Could not update selection", e);
}
} catch (Exception e) {
logger.warn("Could not update selection", e);
}
diff --git
a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java
b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java
index
7e72d8f
..
5fc3a6f
100644
(file)
--- a/
src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java
+++ b/
src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java
@@
-164,7
+164,7
@@
public abstract class JalviewChimeraBinding extends
chimmaps.put(file, newList);
for (ChimeraModel cm : newList)
{
chimmaps.put(file, newList);
for (ChimeraModel cm : newList)
{
- while (mdlToFile.size()<1+cm.getModelNumber())
+ while (mdlToFile.size() < 1 + cm.getModelNumber())
{
mdlToFile.add(new String(""));
}
{
mdlToFile.add(new String(""));
}
@@
-444,23
+444,8
@@
public abstract class JalviewChimeraBinding extends
.println("RUNTIME PROBLEM: Jmol seems to be taking a long time to process all the structures.");
return;
}
.println("RUNTIME PROBLEM: Jmol seems to be taking a long time to process all the structures.");
return;
}
+ refreshPdbEntries();
StringBuffer selectioncom = new StringBuffer();
StringBuffer selectioncom = new StringBuffer();
- // In principle - nSeconds specifies the speed of animation for each
- // superposition - but is seems to behave weirdly, so we don't specify it.
- String nSeconds = " ";
- if (files.length > 10)
- {
- nSeconds = " 0.00001 ";
- }
- else
- {
- nSeconds = " " + (2.0 / files.length) + " ";
- // if (nSeconds).substring(0,5)+" ";
- }
- // see JAL-1345 - should really automatically turn off the animation for
- // large numbers of structures, but Jmol doesn't seem to allow that.
- nSeconds = " ";
- // union of all aligned positions are collected together.
for (int a = 0; a < _alignment.length; a++)
{
int refStructure = _refStructure[a];
for (int a = 0; a < _alignment.length; a++)
{
int refStructure = _refStructure[a];
@@
-469,9
+454,9
@@
public abstract class JalviewChimeraBinding extends
if (a > 0
&& selectioncom.length() > 0
&& !selectioncom.substring(selectioncom.length() - 1).equals(
if (a > 0
&& selectioncom.length() > 0
&& !selectioncom.substring(selectioncom.length() - 1).equals(
- "|"))
+ " "))
{
{
- selectioncom.append("|");
+ selectioncom.append(" ");
}
// process this alignment
if (refStructure >= files.length)
}
// process this alignment
if (refStructure >= files.length)
@@
-506,7
+491,7
@@
public abstract class JalviewChimeraBinding extends
if (mapping == null || mapping.length < 1)
{
throw new Error(
if (mapping == null || mapping.length < 1)
{
throw new Error(
- "Implementation error - Jmol seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016");
+ "Implementation error - Chimera seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016");
}
int lastPos = -1;
for (int s = 0; s < sequence[pdbfnum].length; s++)
}
int lastPos = -1;
for (int s = 0; s < sequence[pdbfnum].length; s++)
@@
-553,7
+538,7
@@
public abstract class JalviewChimeraBinding extends
commonrpositions[pdbfnum][r] = pos;
}
// create model selection suffix
commonrpositions[pdbfnum][r] = pos;
}
// create model selection suffix
- isel[pdbfnum] = "/" + (pdbfnum + 1) + ".1";
+ isel[pdbfnum] = "#" + pdbfnum;
if (mapping[m].getChain() == null
|| mapping[m].getChain().trim().length() == 0)
{
if (mapping[m].getChain() == null
|| mapping[m].getChain().trim().length() == 0)
{
@@
-561,7
+546,7
@@
public abstract class JalviewChimeraBinding extends
}
else
{
}
else
{
- targetC[pdbfnum] = ":" + mapping[m].getChain();
+ targetC[pdbfnum] = "." + mapping[m].getChain();
}
chainNames[pdbfnum] = mapping[m].getPdbId()
+ targetC[pdbfnum];
}
chainNames[pdbfnum] = mapping[m].getPdbId()
+ targetC[pdbfnum];
@@
-581,6
+566,7
@@
public abstract class JalviewChimeraBinding extends
String[] selcom = new String[files.length];
int nmatched = 0;
String[] selcom = new String[files.length];
int nmatched = 0;
+ String sep = "";
// generate select statements to select regions to superimpose structures
{
for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
// generate select statements to select regions to superimpose structures
{
for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
@@
-589,7
+575,6
@@
public abstract class JalviewChimeraBinding extends
int lpos = -1;
boolean run = false;
StringBuffer molsel = new StringBuffer();
int lpos = -1;
boolean run = false;
StringBuffer molsel = new StringBuffer();
- molsel.append("{");
for (int r = 0; r < matched.length; r++)
{
if (matched[r])
for (int r = 0; r < matched.length; r++)
{
if (matched[r])
@@
-603,10
+588,10
@@
public abstract class JalviewChimeraBinding extends
// discontinuity
if (lpos != -1)
{
// discontinuity
if (lpos != -1)
{
- molsel.append(lpos);
+ molsel.append((run ? "" : ":") + lpos);
molsel.append(chainCd);
// molsel.append("} {");
molsel.append(chainCd);
// molsel.append("} {");
- molsel.append("|");
+ // molsel.append(",");
}
}
else
}
}
else
@@
-615,7
+600,7
@@
public abstract class JalviewChimeraBinding extends
if (!run)
{
// at the beginning, so add dash
if (!run)
{
// at the beginning, so add dash
- molsel.append(lpos);
+ molsel.append(":" + lpos);
molsel.append("-");
}
run = true;
molsel.append("-");
}
run = true;
@@
-627,19
+612,17
@@
public abstract class JalviewChimeraBinding extends
// add final selection phrase
if (lpos != -1)
{
// add final selection phrase
if (lpos != -1)
{
- molsel.append(lpos);
+ molsel.append((run ? "" : ":") + lpos);
molsel.append(chainCd);
molsel.append(chainCd);
- molsel.append("}");
+ // molsel.append("");
}
if (molsel.length() > 1)
{
selcom[pdbfnum] = molsel.toString();
}
if (molsel.length() > 1)
{
selcom[pdbfnum] = molsel.toString();
- selectioncom.append("((");
+ selectioncom.append("#" + pdbfnum);
selectioncom.append(selcom[pdbfnum].substring(1,
selcom[pdbfnum].length() - 1));
selectioncom.append(selcom[pdbfnum].substring(1,
selcom[pdbfnum].length() - 1));
- selectioncom.append(" )& ");
- selectioncom.append(pdbfnum + 1);
- selectioncom.append(".1)");
+ selectioncom.append(" ");
if (pdbfnum < files.length - 1)
{
selectioncom.append("|");
if (pdbfnum < files.length - 1)
{
selectioncom.append("|");
@@
-658,31
+641,19
@@
public abstract class JalviewChimeraBinding extends
{
continue;
}
{
continue;
}
- command.append("echo ");
- command.append("\"Superposing (");
- command.append(chainNames[pdbfnum]);
- command.append(") against reference (");
- command.append(chainNames[refStructure]);
- command.append(")\";\ncompare " + nSeconds);
- command.append("{");
- command.append(1 + pdbfnum);
- command.append(".1} {");
- command.append(1 + refStructure);
- command.append(".1} SUBSET {*.CA | *.P} ATOMS ");
+ command.append("match ");
// form the matched pair strings
// form the matched pair strings
- String sep = "";
for (int s = 0; s < 2; s++)
{
command.append(selcom[(s == 0 ? pdbfnum : refStructure)]);
}
for (int s = 0; s < 2; s++)
{
command.append(selcom[(s == 0 ? pdbfnum : refStructure)]);
}
- command.append(" ROTATE TRANSLATE;\n");
}
if (selectioncom.length() > 0)
{
System.out.println("Select regions:\n" + selectioncom.toString());
}
if (selectioncom.length() > 0)
{
System.out.println("Select regions:\n" + selectioncom.toString());
- evalStateCommand("select *; cartoons off; backbone; select ("
- + selectioncom.toString() + "); cartoons; ");
+ evalStateCommand("~display *; trace *; ribbons "
+ + selectioncom.toString() + "");
// selcom.append("; ribbons; ");
System.out
.println("Superimpose command(s):\n" + command.toString());
// selcom.append("; ribbons; ");
System.out
.println("Superimpose command(s):\n" + command.toString());
@@
-697,8
+668,8
@@
public abstract class JalviewChimeraBinding extends
selectioncom.setLength(selectioncom.length() - 1);
}
System.out.println("Select regions:\n" + selectioncom.toString());
selectioncom.setLength(selectioncom.length() - 1);
}
System.out.println("Select regions:\n" + selectioncom.toString());
- evalStateCommand("select *; cartoons off; backbone; select ("
- + selectioncom.toString() + "); cartoons; ");
+ evalStateCommand("~display *; trace *; ribbons "
+ + selectioncom.toString() + "");
// evalStateCommand("select *; backbone; select "+selcom.toString()+"; cartoons; center "+selcom.toString());
}
}
// evalStateCommand("select *; backbone; select "+selcom.toString()+"; cartoons; center "+selcom.toString());
}
}
@@
-715,18
+686,33
@@
public abstract class JalviewChimeraBinding extends
}
}
}
}
- public void evalStateCommand(String command)
+ public void evalStateCommand(final String command)
{
viewerCommandHistory(false);
checkLaunched();
if (lastCommand == null || !lastCommand.equals(command))
{
{
viewerCommandHistory(false);
checkLaunched();
if (lastCommand == null || !lastCommand.equals(command))
{
-
- lastReply = viewer.sendChimeraCommand(command, true);
- if (debug)
- {
- log("Response from command ('" + command + "') was:\n" + lastReply);
- }
+// Thread t = new Thread(new Runnable()
+// {
+// @Override
+// public void run()
+// {
+ lastReply = viewer.sendChimeraCommand(command, true);
+ if (debug)
+ {
+ log("Response from command ('" + command + "') was:\n"
+ + lastReply);
+ }
+// }
+// });
+ // TODO - use j7/8 thread management
+// try
+// {
+// t.join();
+// } catch (InterruptedException foo)
+// {
+// }
+// ;
}
viewerCommandHistory(true);
lastCommand = command;
}
viewerCommandHistory(true);
lastCommand = command;
@@
-866,18
+852,18
@@
public abstract class JalviewChimeraBinding extends
{
return new String[0];
}
{
return new String[0];
}
-// if (modelFileNames == null)
-// {
-// Collection<ChimeraModel> chimodels = viewer.getChimeraModels();
-// _modelFileNameMap = new int[chimodels.size()];
-// int j = 0;
-// for (ChimeraModel chimodel : chimodels)
-// {
-// String mdlName = chimodel.getModelName();
-// }
-// modelFileNames = new String[j];
-// // System.arraycopy(mset, 0, modelFileNames, 0, j);
-// }
+ // if (modelFileNames == null)
+ // {
+ // Collection<ChimeraModel> chimodels = viewer.getChimeraModels();
+ // _modelFileNameMap = new int[chimodels.size()];
+ // int j = 0;
+ // for (ChimeraModel chimodel : chimodels)
+ // {
+ // String mdlName = chimodel.getModelName();
+ // }
+ // modelFileNames = new String[j];
+ // // System.arraycopy(mset, 0, modelFileNames, 0, j);
+ // }
return chimmaps.keySet().toArray(
modelFileNames = new String[chimmaps.size()]);
return chimmaps.keySet().toArray(
modelFileNames = new String[chimmaps.size()]);
@@
-916,17
+902,17
@@
public abstract class JalviewChimeraBinding extends
viewer.stopListening();
if (resetLastRes.length() > 0)
{
viewer.stopListening();
if (resetLastRes.length() > 0)
{
- viewer.sendChimeraCommand(resetLastRes.toString(), false);
+ eval.setLength(0);
+ eval.append(resetLastRes.toString() + ";");
}
}
- eval.setLength(0);
eval.append("display "); // +modelNum
resetLastRes.setLength(0);
resetLastRes.append("~display ");
{
eval.append(" #" + (mdlNum));
eval.append("display "); // +modelNum
resetLastRes.setLength(0);
resetLastRes.append("~display ");
{
eval.append(" #" + (mdlNum));
- resetLastRes.append("#" + (mdlNum));
+ resetLastRes.append(" #" + (mdlNum));
}
// complete select string
}
// complete select string
@@
-937,11
+923,7
@@
public abstract class JalviewChimeraBinding extends
eval.append("." + chain);
resetLastRes.append("." + chain);
}
eval.append("." + chain);
resetLastRes.append("." + chain);
}
- eval.append(eval.toString());
-
- resetLastRes.append(resetLastRes.toString()
- );
-
+
viewer.sendChimeraCommand(eval.toString(), false);
viewerCommandHistory(true);
viewer.startListening();
viewer.sendChimeraCommand(eval.toString(), false);
viewerCommandHistory(true);
viewer.startListening();