Hello everyone. I was wondering if there was any intention to ever generate a namespace PyRosetta build for Windows? I know in the past it had been said that monolith would probably be the default in the future, but I would be interested in a namespace build for Windows because namespace seems to use much less memory than monolith. I am trying to develop a graphical interface for PyRosetta (InteractiveROSETTA, for those of you that attended RosettaCON), and I am able to run simple PyRosetta tasks such as design, minimization, quick loop building/docking, and energetic calculations locally on OSX/Linux machines, but on Windows I cannot do this since the monolith build shoots up memory usage to more than 3GB, which causes swapping on my 4GB virtual machine. The current solution is to send these jobs to a remote Linux server for Windows clients, but I would like to not have to do this if possible, and there are a lot of people that I know of that are currently interested in using PyRosetta on Windows but are unable to migrate to Linux. The following script is enough to send my memory usage to 2.4GB on Windows (r10 build of Windows PyRosetta):
from rosetta import *
scorefxn = ScoreFunction()
The name step oddly shoots memory usage to 2.4GB so maybe a ton of things are being initialized in that step. The memory usage of the same script in namespace Linux is only ~200MB. I was going to post this yesterday but then figured I should test the monolith Linux build to see if its memory usage goes way up, to try to help identify the problem. So I compiled monolith PyRosetta using 2015.19.57819 Rosetta source and now my memory usage is ~1GB for simply doing "from rosetta import *" and then it goes all the way up to 3.4GB for "init()" (this is on Linux, using Python's memory_profiler module to measure memory usage). I didn't do anything special so I probably wrapped up a lot more things than is in the Windows monolith build. I'm also not sure why init() isn't sufficient to generate a high memory footprint on Windows but on monolith Linux it is.
So I don't know if a namespace Windows build would fix this issue, but I think it might be worth trying. Maybe it's not possible to get a Windows namespace build given the intricacies of Windows compilation, but I just thought I would ask anyway.
Yes, it seems monolith can be quite a memory hog on some machines. It is why I stick to namespaces, even though it may take longer to load up PyRosetta. The monolith build came from windows. From what I understand, it is the only build possible on windows. I highly doubt there will ever be a namespaces build for windows for exactly the reasons you state.
Okay, I will say that I don't know too much about compiling something like this on Windows, but I am not sure why this would be impossible. If we can get a pyd library that includes everything in it, why can't we have a bunch of smaller pyd files for a namespace build?
Windows implementation of shared libraries is radically different from Unix one. So right now it is not be possible to create Windows namespace build.