Member Site › Forums › PyRosetta › PyRosetta – Build/Install › basic scoring issues
- This topic has 12 replies, 4 voices, and was last updated 8 years ago by Anonymous.
-
AuthorPosts
-
-
November 23, 2016 at 8:43 am #2537Anonymous
I’m keep studying PyRosetta using tutorials from http://www.pyrosetta.org/tutorials
I’ve got several errors when going through Scoring workshop.
Using Ubuntu 16.04.1 LTS 64-bit, python 2.7.12, IPython 2.4.1, PyRosetta-4
(1) Setting up a custom score function rises an error:
In [10]: scorefxn_n = ScoreFunction()
In [11]: scorefxn_n.set_weight(fa_atr, 1.0)
NameError Traceback (most recent call last)
<ipython-input-11-31ac60f02dda> in <module>()
----> 1 scorefxn_n.set_weight(fa_atr, 1.0)
NameError: name 'fa_atr' is not defined
print scorefxn and scorefxn.show() work normally.
(2) another “name is not defined” problem with the emap:
In [18]: emap = EMapVector()
NameError Traceback (most recent call last)
<ipython-input-18-083b4abf31a3> in <module>()
----> 1 emap = EMapVector()
NameError: name 'EMapVector' is not defined
(3) sending score function to PyMOL:
In [19]: pymol.apply(ras)
In [20]: pymol.send_energy(ras)
In [21]: pymol.send_energy(ras, fa_atr)
NameError Traceback (most recent call last)
<ipython-input-21-c132bf35caaa> in <module>()
----> 1 pymol.send_energy(ras, fa_atr)
NameError: name 'fa_atr' is not defined
(4) And finally sending hbonds data to PyMOL:
In [23]: hbonds_set = get_hbonds(ras)
In [24]: hbonds_set.show(ras, 24)
#Dch Dn Dres Da Ach An Ares Aa length AHDang BAHang BAtor weight energy
#A 24 ILE N A 20 THR O 2.08 160.5 165.8 117.0 1.000 -0.643
In [25]: pymol.send_hbonds(ras)
AttributeError Traceback (most recent call last)
<ipython-input-25-0e4c1c06cb10> in <module>()
----> 1 pymol.send_hbonds(ras)
AttributeError: 'rosetta.protocols.moves.PyMolMover' object has no attribute 'send_hbonds'
I would greatly appreciate your help, as manipulating the scoring is crutial and I can’t go forward just skipping it…
-
November 23, 2016 at 3:29 pm #11987Anonymous
It looks like it’s mainly import issues.
In Python everything lives in modules, and you need to import them into the current namespace. (Py)Rosetta has a deeply nested hierarchy of modules/namespaces. For convenience, many things are aliased in the toplevel namespaces, so you can do things like `from rosetta import *`, but in truth those objects live in deeply nested location. (This is important, as only certain well-used objects are imported with the `from rosetta import *` – there are many object where you need to import them from nested modules.)
An added complication is that the hierarchy was split going from PyRosetta3 to PyRosetta4 – where there used to be only one top-level namespace, now there’s both `pyrosetta` and `rosetta` – the latter being things which are from Rosetta’s C++ library, and the former being code which is PyRosetta specific. (Mainly a number of convenience functions.)
In your case, things like fa_atr and EMapVector can be found in the rosetta.core.scoring namespace. They may or may not be loaded with a `from rosetta import *` command – you may need to import them (or the nested namespace) specifically.
The PyMolMover.send_hbonds() issue is a different issue. It used to be that there was actually *two* PyMolMovers – one in the C++ code, and one at the Python level. The send_hbonds() function was a feature of the Python version, but not the C++ version. The Python version is deprecated, and the functionality is being migrated, but that hasn’t happened yet (as of Nov 2016). It should happend soon, but obviously won’t be in the version you’re currently using. As this is just a visualization issue, you should be safe to skip this particular step.
-
November 23, 2016 at 3:29 pm #12508Anonymous
It looks like it’s mainly import issues.
In Python everything lives in modules, and you need to import them into the current namespace. (Py)Rosetta has a deeply nested hierarchy of modules/namespaces. For convenience, many things are aliased in the toplevel namespaces, so you can do things like `from rosetta import *`, but in truth those objects live in deeply nested location. (This is important, as only certain well-used objects are imported with the `from rosetta import *` – there are many object where you need to import them from nested modules.)
An added complication is that the hierarchy was split going from PyRosetta3 to PyRosetta4 – where there used to be only one top-level namespace, now there’s both `pyrosetta` and `rosetta` – the latter being things which are from Rosetta’s C++ library, and the former being code which is PyRosetta specific. (Mainly a number of convenience functions.)
In your case, things like fa_atr and EMapVector can be found in the rosetta.core.scoring namespace. They may or may not be loaded with a `from rosetta import *` command – you may need to import them (or the nested namespace) specifically.
The PyMolMover.send_hbonds() issue is a different issue. It used to be that there was actually *two* PyMolMovers – one in the C++ code, and one at the Python level. The send_hbonds() function was a feature of the Python version, but not the C++ version. The Python version is deprecated, and the functionality is being migrated, but that hasn’t happened yet (as of Nov 2016). It should happend soon, but obviously won’t be in the version you’re currently using. As this is just a visualization issue, you should be safe to skip this particular step.
-
November 23, 2016 at 3:29 pm #13029Anonymous
It looks like it’s mainly import issues.
In Python everything lives in modules, and you need to import them into the current namespace. (Py)Rosetta has a deeply nested hierarchy of modules/namespaces. For convenience, many things are aliased in the toplevel namespaces, so you can do things like `from rosetta import *`, but in truth those objects live in deeply nested location. (This is important, as only certain well-used objects are imported with the `from rosetta import *` – there are many object where you need to import them from nested modules.)
An added complication is that the hierarchy was split going from PyRosetta3 to PyRosetta4 – where there used to be only one top-level namespace, now there’s both `pyrosetta` and `rosetta` – the latter being things which are from Rosetta’s C++ library, and the former being code which is PyRosetta specific. (Mainly a number of convenience functions.)
In your case, things like fa_atr and EMapVector can be found in the rosetta.core.scoring namespace. They may or may not be loaded with a `from rosetta import *` command – you may need to import them (or the nested namespace) specifically.
The PyMolMover.send_hbonds() issue is a different issue. It used to be that there was actually *two* PyMolMovers – one in the C++ code, and one at the Python level. The send_hbonds() function was a feature of the Python version, but not the C++ version. The Python version is deprecated, and the functionality is being migrated, but that hasn’t happened yet (as of Nov 2016). It should happend soon, but obviously won’t be in the version you’re currently using. As this is just a visualization issue, you should be safe to skip this particular step.
-
November 23, 2016 at 6:57 pm #11988Anonymous
Most of what Rocco says is right. The transition from PyRosetta-3 to PyRosetta-4 for us was not extremely straightforward. In the build/install, it does mention the pyrosetta import, and I just added a note on the tutorials page that for all the tutorials, pyrosetta must be imported as well (http://www.pyrosetta.org/tutorials).
from pyrosetta import *
from rosetta import *
init()
From my experience thus far, most of the same things are imported as they were for PyRosetta-3 (Except, that various modules FROM ROSETTA are imported when you import PyRosetta, at least when you do import *. This might just be because the PyRosetta namespace is using certain Rosetta Modules – and so, those modules being used by the PyRosetta namespace come along for the ride (which is actually quite convenient for us – to get ScoreFunction, Pose, and some of the usual classes we use in PyRosetta). That seems to not include the scoreterm enums like fa_atr, however. To do this, you would want to import all of core.scoring or select pieces.
from rosetta.core.scoring import *
OR
from rosetta.core.scoring import ScoreType
#To use this way:
ScoreType.fa_atr
-Jared
-
November 23, 2016 at 6:57 pm #12509Anonymous
Most of what Rocco says is right. The transition from PyRosetta-3 to PyRosetta-4 for us was not extremely straightforward. In the build/install, it does mention the pyrosetta import, and I just added a note on the tutorials page that for all the tutorials, pyrosetta must be imported as well (http://www.pyrosetta.org/tutorials).
from pyrosetta import *
from rosetta import *
init()
From my experience thus far, most of the same things are imported as they were for PyRosetta-3 (Except, that various modules FROM ROSETTA are imported when you import PyRosetta, at least when you do import *. This might just be because the PyRosetta namespace is using certain Rosetta Modules – and so, those modules being used by the PyRosetta namespace come along for the ride (which is actually quite convenient for us – to get ScoreFunction, Pose, and some of the usual classes we use in PyRosetta). That seems to not include the scoreterm enums like fa_atr, however. To do this, you would want to import all of core.scoring or select pieces.
from rosetta.core.scoring import *
OR
from rosetta.core.scoring import ScoreType
#To use this way:
ScoreType.fa_atr
-Jared
-
November 23, 2016 at 6:57 pm #13030Anonymous
Most of what Rocco says is right. The transition from PyRosetta-3 to PyRosetta-4 for us was not extremely straightforward. In the build/install, it does mention the pyrosetta import, and I just added a note on the tutorials page that for all the tutorials, pyrosetta must be imported as well (http://www.pyrosetta.org/tutorials).
from pyrosetta import *
from rosetta import *
init()
From my experience thus far, most of the same things are imported as they were for PyRosetta-3 (Except, that various modules FROM ROSETTA are imported when you import PyRosetta, at least when you do import *. This might just be because the PyRosetta namespace is using certain Rosetta Modules – and so, those modules being used by the PyRosetta namespace come along for the ride (which is actually quite convenient for us – to get ScoreFunction, Pose, and some of the usual classes we use in PyRosetta). That seems to not include the scoreterm enums like fa_atr, however. To do this, you would want to import all of core.scoring or select pieces.
from rosetta.core.scoring import *
OR
from rosetta.core.scoring import ScoreType
#To use this way:
ScoreType.fa_atr
-Jared
-
November 28, 2016 at 8:08 pm #11989Anonymous
Re PyMOL mover issues: PyRosetta-4 is using C++ version of this mover while PyRosetta-3 is using Python implementation which is now deprecated. However the current C++ implementaion does not have all the methods (like send_hbonds) so we currently working on porting them to C++. I expecet this new code to be merged withing a few weeks so afrter that code above should work.
-
November 28, 2016 at 8:08 pm #12510Anonymous
Re PyMOL mover issues: PyRosetta-4 is using C++ version of this mover while PyRosetta-3 is using Python implementation which is now deprecated. However the current C++ implementaion does not have all the methods (like send_hbonds) so we currently working on porting them to C++. I expecet this new code to be merged withing a few weeks so afrter that code above should work.
-
November 28, 2016 at 8:08 pm #13031Anonymous
Re PyMOL mover issues: PyRosetta-4 is using C++ version of this mover while PyRosetta-3 is using Python implementation which is now deprecated. However the current C++ implementaion does not have all the methods (like send_hbonds) so we currently working on porting them to C++. I expecet this new code to be merged withing a few weeks so afrter that code above should work.
-
December 1, 2016 at 8:49 am #11996Anonymous
Rocco, Jared, Sergey,
Everything worked after proper import, and I can skip PyMolMover.send_hbonds() for now.
Many thanks for the explanation and advice!!!
-
December 1, 2016 at 8:49 am #12517Anonymous
Rocco, Jared, Sergey,
Everything worked after proper import, and I can skip PyMolMover.send_hbonds() for now.
Many thanks for the explanation and advice!!!
-
December 1, 2016 at 8:49 am #13038Anonymous
Rocco, Jared, Sergey,
Everything worked after proper import, and I can skip PyMolMover.send_hbonds() for now.
Many thanks for the explanation and advice!!!
-
-
AuthorPosts
- You must be logged in to reply to this topic.