Hello Pymol Users/Developers,
I am developing a wxpython application for windows that is essentially a fancy multiple sequence alignment viewer. I have linked this to pymol. I would like to be able to launch multiple instances of pymol with different molecules from a single parent process.
The current solution I am using is as follows: I execute pymol as a separate asynchronous process and then redirect stdin, stdout, and stderr. Pymol is launched with the external GUI disabled. Commands are sent to pymol on stdin. This works reasonably well for sending commands to multiple instances of pymol but there are two problems.
1: When pymol is closed using the X in the top right corner of the opengl frame pymol freezes and is unrecoverable. Pymol will close clean if I exit from the command prompt but not from the frame. This seems to be an artifact of the way it is launched and does not occur when I launch pymol with -ix directly from a command prompt rather then a wxpython program. If there is a solution for this, all is well, it is a bit hackish but it works.
2: This is not as much of a problem but pymol somehow manages to consume the command window that launches the wxpython application. I find this remarkably confusing, I am not an expert developer but I thought launching as an asynchronous process would prevent that from occurring.
I'm a pymol newbie and am not sure if this is the best way to do this. I have tried a few other approaches from mail lists.
1: Control through greg landrum's xmlrpc listener. This exhibits the same exit issues if I launch pymol form the parent application.
2: Launching pymol on start up and communicating through a pymol cmd object. This consumes the parent thread and I am unable to determine how to launch multiple instances. Consumption of the parent thread causes the main application to exit when pymol exits. This is a bit of a show stopper.
Any advice/suggestions would be greatly appreciated. Thank you