66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
from pymol import cmd, testing
|
|
|
|
@testing.requires_version('2.2')
|
|
@testing.requires('properties')
|
|
class TestMaePropertiesIO(testing.PyMOLTestCase):
|
|
def test(self):
|
|
cmd.fragment('gly')
|
|
|
|
# atom properties
|
|
cmd.alter('index 2-4', 'p.r_custom_indexhalve = index / 2.0')
|
|
cmd.alter('index 3-5', 'p.neg_index = -index')
|
|
cmd.alter('elem C', 'p["spaced resn name"] = resn + " " + name')
|
|
|
|
# object properties
|
|
objprops = [
|
|
('first', 'Max'),
|
|
('last', 'Mustermann'),
|
|
('full name', 'Max Mustermann'),
|
|
('quoted "name"', 'Max "Mustermann"'),
|
|
]
|
|
for (key, value) in objprops:
|
|
cmd.set_property(key, value)
|
|
|
|
# save/load round-trip
|
|
with testing.mktemp('.mae') as filename:
|
|
cmd.save(filename)
|
|
cmd.delete('*')
|
|
cmd.set('load_object_props_default', '*')
|
|
cmd.set('load_atom_props_default', '*')
|
|
cmd.load(filename, 'm1')
|
|
|
|
# type conversions
|
|
cmd.alter('m1', 'p.neg_index = int(p.s_pymol_neg_index or 0)')
|
|
|
|
# atom properties
|
|
self.assertEqual(2, cmd.count_atoms('p.neg_index < -3'))
|
|
self.assertEqual(2, cmd.count_atoms('p.r_custom_indexhalve > 1.0'))
|
|
|
|
# changed in 2.3.1: undefined (<>) -> None
|
|
resnname = set()
|
|
cmd.iterate('m1', 'resnname.add(p["s_pymol_spaced resn name"] or "")', space=locals())
|
|
self.assertEqual(resnname, set(['GLY C', 'GLY CA', '']))
|
|
|
|
# object properties
|
|
for (key, value) in objprops:
|
|
self.assertEqual(cmd.get_property('s_pymol_' + key, 'm1'), value)
|
|
|
|
@testing.requires_version('2.3.1')
|
|
def test_undefined(self):
|
|
cmd.fragment('gly')
|
|
cmd.alter('name C', 'p["s_p_foo"] = "bar"')
|
|
cmd.alter('name N', 'p["r_p_bar"] = 1.234')
|
|
|
|
# save/load round-trip
|
|
with testing.mktemp('.mae') as filename:
|
|
cmd.save(filename)
|
|
cmd.delete('*')
|
|
cmd.load(filename, 'm1')
|
|
|
|
myprops = {}
|
|
cmd.iterate('all', 'myprops[name] = (p.s_p_foo, p.r_p_bar)', space=locals())
|
|
|
|
self.assertEqual(myprops['O'], (None, None))
|
|
self.assertEqual(myprops['C'], ("bar", None))
|
|
self.assertEqual(myprops['N'], (None, 1.234))
|