mirror of
https://github.com/schrodinger/pymol-open-source.git
synced 2026-06-04 20:04:21 +08:00
139 lines
5.0 KiB
Python
139 lines
5.0 KiB
Python
'''
|
|
Test loading MAE files
|
|
'''
|
|
|
|
from pymol import cmd, testing
|
|
|
|
mae_filenames = [
|
|
'data/foo.mae',
|
|
'data/foo.mae.gz',
|
|
'data/foo.cms',
|
|
# 'data/foo.cms.gz',
|
|
]
|
|
|
|
mae_urls = [
|
|
'http://thomas-holder.de/tmp/foo.mae',
|
|
'http://thomas-holder.de/tmp/foo.mae.gz',
|
|
]
|
|
|
|
@testing.requires('incentive')
|
|
class TestLoadMAE(testing.PyMOLTestCase):
|
|
|
|
@testing.foreach.zip(mae_filenames)
|
|
def testLoad(self, filename):
|
|
cmd.load(filename)
|
|
|
|
v = cmd.get_object_list()
|
|
self.assertEqual(v, ['foo'])
|
|
|
|
@testing.foreach.zip(mae_urls)
|
|
@testing.requires('network')
|
|
def testLoadURL(self, filename):
|
|
cmd.load(filename)
|
|
|
|
v = cmd.get_object_list()
|
|
self.assertEqual(v, ['foo'])
|
|
|
|
@testing.requires_version('2.1.1')
|
|
def testLoadCryst1(self):
|
|
cmd.load(self.datafile('cryst1.mae'), 'm1')
|
|
s = cmd.get_symmetry('m1')
|
|
self.assertArrayEqual(s[:6], [50.84, 42.77, 28.95, 90., 90., 90.], delta=0.01)
|
|
self.assertEqual(s[6], 'P 21 21 21')
|
|
|
|
def _assertCountEqual(self, sele1, sele2, delta=0):
|
|
self.assertAlmostEqual(
|
|
cmd.count_atoms(sele1),
|
|
cmd.count_atoms(sele2), delta=delta)
|
|
|
|
@testing.requires_version('2.2')
|
|
def testExportStyle(self):
|
|
cmd.fab('ACDEF', 'm1')
|
|
cmd.hide()
|
|
cmd.show('cartoon', 'resi 1-3')
|
|
cmd.show('lines', 'resn CYS')
|
|
cmd.show('sticks', 'resn ASP+PHE')
|
|
cmd.show('spheres', 'resn GLU')
|
|
cmd.set('stick_ball', 1, 'resn PHE')
|
|
cmd.set('stick_ball_ratio', 1.5, 'm1')
|
|
testlabel = 'Hello "World"'
|
|
cmd.label('name SG', repr(testlabel))
|
|
|
|
with testing.mktemp('.mae') as filename:
|
|
cmd.save(filename)
|
|
cmd.delete('*')
|
|
cmd.load(filename, 'm2')
|
|
|
|
g_labels = []
|
|
cmd.iterate('name SG', 'g_labels.append(label)', space=locals())
|
|
cmd.alter('*', 'b = 1 if s.stick_ball else 0')
|
|
|
|
self._assertCountEqual('rep cartoon & guide', 'resi 1-3 & guide')
|
|
self._assertCountEqual('rep lines', 'resn CYS', delta=1)
|
|
self._assertCountEqual('rep sticks', 'resn ASP+PHE')
|
|
self._assertCountEqual('rep spheres', 'resn GLU')
|
|
self._assertCountEqual('b > 0.5', 'resn PHE')
|
|
self.assertTrue(cmd.get_setting_float('stick_ball_ratio', 'm2') > 1.1)
|
|
self.assertEqual(g_labels[0], testlabel)
|
|
|
|
@testing.foreach.product((0, 1), (0, 1))
|
|
@testing.requires_version('2.3')
|
|
def testLoadMae(self, multiplex, discrete):
|
|
cmd.load(self.datafile('multimae.maegz'), 'm',
|
|
multiplex=multiplex, discrete=discrete)
|
|
|
|
nstate = 4
|
|
natoms = 79
|
|
nmodel = 1
|
|
ndiscrete = discrete
|
|
|
|
if multiplex:
|
|
natoms *= nstate
|
|
ndiscrete *= nstate
|
|
nmodel = nstate
|
|
nstate = 1
|
|
elif discrete:
|
|
self.assertEqual(cmd.count_atoms(state=1), natoms)
|
|
natoms *= nstate
|
|
|
|
self.assertEqual(cmd.count_states(), nstate)
|
|
self.assertEqual(cmd.count_discrete('*'), ndiscrete)
|
|
self.assertEqual(cmd.count_atoms(), natoms)
|
|
self.assertEqual(len(cmd.get_object_list()), nmodel)
|
|
|
|
@testing.requires_version('2.3')
|
|
def testLoadMaeUserLabel(self):
|
|
from pymol import stored
|
|
cmd.load(self.datafile('userlabels2.mae'), 'm')
|
|
cmd.iterate('rank 1', 'stored.label = label')
|
|
self.assertEqual(stored.label, '1.31 TRP')
|
|
|
|
@testing.requires_version('2.5')
|
|
def testLabel(self):
|
|
cmd.load(self.datafile('labels.mae'), 'm')
|
|
labels = []
|
|
cmd.iterate('all', 'labels.append(label)', space={'labels': labels})
|
|
self.assertEqual(labels, [
|
|
'N +1 (-1.2, 0.2, -0.2) 0.290 0.75 18.50 GLY 1 D N 1 1',
|
|
'C (0.2, 0.3, -0.5) -0.010 0.75 24.17 GLY 1 D CA 2 2',
|
|
'C (1.1, -0.4, 0.5) 0.620 0.75 11.07 GLY 1 D C 3 3',
|
|
'O (0.5, -1.0, 1.5) -0.570 0.75 31.09 GLY 1 D O 4 4',
|
|
'H (0.4, -0.1, -1.5) 0.090 0.75 24.17 GLY 1 D HA 9 16',
|
|
'H (0.5, 1.4, -0.5) 0.090 0.75 24.17 GLY 1 D HA3 8 15',
|
|
'H (-1.5, 1.0, 0.4) 0.160 0.75 18.50 GLY 1 D H1 7 14',
|
|
'H (-1.7, 0.2, -1.1) 0.160 0.75 18.50 GLY 1 D H2 5 12',
|
|
'H (-1.4, -0.7, 0.3) 0.160 0.75 18.50 GLY 1 D H3 6 13',
|
|
'N (2.3, -0.4, 0.4) -0.380 1.00 48.64 CYS 2 D N 10 5',
|
|
'C (3.1, -1.1, 1.4) -0.160 1.00 41.94 CYS 2 D CA 11 6',
|
|
'C (4.6, -0.9, 1.1) 0.750 1.00 0.21 CYS 2 D C 12 7',
|
|
'O (5.0, -0.3, 0.1) -0.800 1.00 3.55 CYS 2 D O 13 8',
|
|
'C (2.7, -2.5, 1.5) -0.200 1.00 38.71 CYS 2 D CB 14 9',
|
|
'S (3.5, -3.4, 2.9) -0.310 1.00 18.13 CYS 2 D SG 15 10',
|
|
'O -1 (5.6, -1.6, 2.0) -0.800 1.00 0.21 CYS 2 D OXT 16 11',
|
|
'H (2.8, 0.1, -0.3) 0.270 1.00 48.64 CYS 2 D H 21 21',
|
|
'H (3.0, -0.6, 2.4) 0.140 1.00 41.94 CYS 2 D HA 17 17',
|
|
'H (2.9, -3.0, 0.6) 0.140 1.00 38.71 CYS 2 D HB2 18 18',
|
|
'H (1.6, -2.6, 1.7) 0.140 1.00 38.71 CYS 2 D HB3 19 19',
|
|
'H (3.8, -4.6, 2.5) 0.210 1.00 18.13 CYS 2 D HG 20 20',
|
|
])
|