Files
2026-08-03 18:42:47 +08:00

109 lines
4.8 KiB
Python

'''
Testing settings for simple getting/setting
'''
import unittest
from pymol import cmd, testing, stored
class TestSettings3f(testing.PyMOLTestCase):
@testing.foreach.product((tuple, list), (((1.,2.,3.), (3.,4.,5.),), ((6.,7.,8.),(9.,0.,1.),),),)
def test_set_object_settings_3f(self, f, data):
m1 = "pseudo01"
m2 = "pseudo02"
cmd.pseudoatom(m1)
cmd.pseudoatom(m2)
lp1, lp2 = lp = map(f, data)
cmd.set("label_position", lp1, m1)
cmd.set("label_position", lp2, m2)
stored.pos = {}
cmd.iterate("all", "stored.pos[model]=s['label_position']")
self.assertEqual(tuple(lp1), stored.pos[m1])
self.assertEqual(tuple(lp2), stored.pos[m2])
@testing.foreach.product((tuple, list), (((1.,2.,3.), (3.,4.,5.),), ((6.,7.,8.),(9.,0.,1.),),),)
def test_set_both_object_and_global_settings_3f(self, f, data):
m1 = "pseudo01"
m2 = "pseudo02"
m3 = "pseudo03"
lp1, lp2 = lp = map(f, data)
cmd.pseudoatom(m1)
cmd.pseudoatom(m2)
cmd.pseudoatom(m3)
cmd.set("label_position", lp1)
cmd.set("label_position", lp2, m2)
stored.pos = {}
cmd.iterate("all", "stored.pos[model]=s['label_position']")
self.assertEqual(tuple(lp1), stored.pos[m1])
self.assertEqual(tuple(lp2), stored.pos[m2])
self.assertEqual(tuple(lp1), stored.pos[m3])
@testing.foreach.product((tuple, list), (((1.,2.,3.), (3.,4.,5.), (6.,7.,8.),), ((6.,7.,8.),(9.,0.,1.), (2.,3.,4.),),),)
def test_set_atom_object_and_global_settings_3f(self, f, data):
m1 = "pseudo01"
m2 = "pseudo02"
m3 = "pseudo03"
lp1, lp2, lp3 = lp = map(f, data)
cmd.pseudoatom(m1)
cmd.pseudoatom(m1)
cmd.pseudoatom(m2)
cmd.pseudoatom(m3)
cmd.set("label_position", lp1, "(index 2)")
cmd.set("label_position", lp2)
cmd.set("label_position", lp3, m2)
stored.pos = {}
cmd.iterate("all", "stored.pos['%s-%s' % (model, index)]=s['label_position']")
self.assertEqual(tuple(lp1), stored.pos['%s-%s' % (m1,2)])
self.assertEqual(tuple(lp2), stored.pos['%s-%s' % (m1,1)])
self.assertEqual(tuple(lp3), stored.pos['%s-%s' % (m2,1)])
self.assertEqual(tuple(lp2), stored.pos['%s-%s' % (m3,1)])
@testing.foreach.product((tuple, list), (((1.,2.,3.), (3.,4.,5.),), ((6.,7.,8.),(9.,0.,1.),),),)
def test_atom_state_settings_3f(self, f, data):
m1 = "pseudo01"
lp1, lp2 = lp = map(f, data)
cmd.pseudoatom(m1)
cmd.pseudoatom(m1)
cmd.create(m1, m1, 1, 2)
stored.pos = {}
stored.lp1 = lp1
stored.lp2 = lp2
stored.origp = None
# get origp (should be 0.,0.,0.
cmd.alter("(index 1)", "stored.origp = s['label_placement_offset']")
# change atom-state setting to lp1 for atom in both states
cmd.alter_state(0, "(index 1)", "s['label_placement_offset']=stored.lp1")
# change atom-level setting for all atoms to something else
cmd.alter("all", "s['label_placement_offset']=stored.lp2")
# get atom-state settings
cmd.iterate_state(0, "all", "stored.pos['%s-%s-%s' % (model, state, index)]=s['label_placement_offset']")
# atom-state setting should be lp1 for atom 1
self.assertEqual(tuple(lp1), stored.pos['%s-%s-%s' % (m1, 1, 1)])
self.assertEqual(tuple(lp1), stored.pos['%s-%s-%s' % (m1, 2, 1)])
# atom setting should override to lp2 for atom 2 in both states
self.assertEqual(tuple(lp2), stored.pos['%s-%s-%s' % (m1, 1, 2)])
self.assertEqual(tuple(lp2), stored.pos['%s-%s-%s' % (m1, 2, 2)])
# unset all atom-level settings, atom-state settings should still exist
cmd.alter("all", "s['label_placement_offset']=None")
stored.pos = {}
cmd.iterate_state(0, "all", "stored.pos['%s-%s-%s' % (model, state, index)]=s['label_placement_offset']")
self.assertEqual(tuple(lp1), stored.pos['%s-%s-%s' % (m1, 1, 1)])
self.assertEqual(tuple(lp1), stored.pos['%s-%s-%s' % (m1, 2, 1)])
self.assertEqual(tuple(stored.origp), stored.pos['%s-%s-%s' % (m1, 1, 2)])
self.assertEqual(tuple(stored.origp), stored.pos['%s-%s-%s' % (m1, 2, 2)])
@testing.foreach.product(((list),), ((1.,2.,3.), (3.,4.,5.),))
def test_unsetting_atom_setting(self, f, data):
m1 = "pseudo01"
lp = f(data)
cmd.pseudoatom(m1)
stored.lp = lp
stored.pos = {}
cmd.iterate("all", "stored.pos['%s-%s' % (model, index)] = s['label_placement_offset']")
cmd.alter("all", "s['label_placement_offset']=stored.lp")
stored.pos2 = {}
cmd.alter("all", "s['label_placement_offset']=None")
cmd.iterate("all", "stored.pos2['%s-%s' % (model, index)] = s['label_placement_offset']")
self.assertEqual(stored.pos, stored.pos2)