mirror of
https://github.com/schrodinger/pymol-open-source.git
synced 2026-06-04 20:04:21 +08:00
242 lines
7.5 KiB
Python
242 lines
7.5 KiB
Python
from __future__ import print_function
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
|
|
import pymol
|
|
from pymol import cmd, testing, stored
|
|
|
|
# spectrum produces colors which are wrong in the second digit
|
|
get_color_tuple = lambda c, n=1: tuple([round(x, n) for x in cmd.get_color_tuple(c)])
|
|
|
|
class TestUtil(testing.PyMOLTestCase):
|
|
|
|
_color_by_area_cache = {}
|
|
|
|
@testing.foreach('molecular', 'solvent')
|
|
@testing.requires_version('1.9.0')
|
|
def test_color_by_area(self, mode):
|
|
cmd.fragment('tyr')
|
|
cmd.color('white')
|
|
pymol.util.color_by_area('*', mode, palette='blue_white_red')
|
|
stored.colors = set()
|
|
cmd.iterate('*', 'stored.colors.add(color)')
|
|
colors = [get_color_tuple(c) for c in sorted(stored.colors)]
|
|
self.assertTrue((1., 0., 0.) in colors)
|
|
self.assertTrue((0., 0., 1.) in colors)
|
|
|
|
# compare with other mode
|
|
self._color_by_area_cache[mode] = colors
|
|
colors_mode_other = self._color_by_area_cache.get(
|
|
'molecular' if mode == 'solvent' else 'solvent')
|
|
self.assertNotEqual(colors, colors_mode_other)
|
|
|
|
@testing.requires_version('1.7.2')
|
|
def test_find_surface_residues(self):
|
|
pymol.util.find_surface_residues
|
|
self.skipTest("TODO")
|
|
|
|
def test_find_surface_atoms(self):
|
|
pymol.util.find_surface_atoms
|
|
self.skipTest("TODO")
|
|
|
|
@testing.requires_version('1.7.2')
|
|
def test_get_area(self):
|
|
pymol.util.get_area
|
|
self.skipTest("TODO")
|
|
|
|
def test_get_sasa(self):
|
|
pymol.util.get_sasa
|
|
self.skipTest("TODO")
|
|
|
|
def test_mass_align(self):
|
|
pymol.util.mass_align
|
|
self.skipTest("TODO")
|
|
|
|
def test_sum_formal_charges(self):
|
|
pymol.util.sum_formal_charges
|
|
self.skipTest("TODO")
|
|
|
|
def test_sum_partial_charges(self):
|
|
pymol.util.sum_partial_charges
|
|
self.skipTest("TODO")
|
|
|
|
def test_compute_mass(self):
|
|
pymol.util.compute_mass
|
|
self.skipTest("TODO")
|
|
|
|
def test_protein_assign_charges_and_radii(self):
|
|
pymol.util.protein_assign_charges_and_radii
|
|
self.skipTest("TODO")
|
|
|
|
def test_protein_vacuum_esp(self):
|
|
pymol.util.protein_vacuum_esp
|
|
self.skipTest("TODO")
|
|
|
|
def test_color_carbon(self):
|
|
pymol.util.color_carbon
|
|
self.skipTest("TODO")
|
|
|
|
def test_cbss(self):
|
|
cmd.load(self.datafile('1oky-frag.pdb'))
|
|
c = [2, 13, 22] # blue orange forest
|
|
pymol.util.cbss('*', *c)
|
|
stored.colors = set()
|
|
cmd.iterate('*', 'stored.colors.add((ss or "L", color))')
|
|
self.assertEqual(stored.colors, set(zip('HSL', c)))
|
|
|
|
def _test_cba(self, fun, expected_color):
|
|
cmd.fragment('gly')
|
|
cmd.color('white')
|
|
fun('*')
|
|
stored.colors = set()
|
|
cmd.iterate('elem C', 'stored.colors.add(color)')
|
|
colors = [get_color_tuple(c, 3) for c in stored.colors]
|
|
self.assertEqual(colors, [expected_color])
|
|
|
|
def test_cbag(self):
|
|
self._test_cba(pymol.util.cbag, (0.2, 1.0, 0.2))
|
|
|
|
def test_cbac(self):
|
|
self._test_cba(pymol.util.cbac, (0.0, 1.0, 1.0))
|
|
|
|
def test_cbam(self):
|
|
self._test_cba(pymol.util.cbam, (1.0, 0.2, 0.8))
|
|
|
|
def test_cbay(self):
|
|
self._test_cba(pymol.util.cbay, (1.0, 1.0, 0.0))
|
|
|
|
def test_cbas(self):
|
|
self._test_cba(pymol.util.cbas, (1.0, 0.6, 0.6))
|
|
|
|
def test_cbaw(self):
|
|
self._test_cba(pymol.util.cbaw, (0.9, 0.9, 0.9))
|
|
|
|
def test_cbab(self):
|
|
self._test_cba(pymol.util.cbab, (0.5, 0.5, 1.0))
|
|
|
|
def test_cbao(self):
|
|
self._test_cba(pymol.util.cbao, (1.0, 0.7, 0.2))
|
|
|
|
def test_cbap(self):
|
|
self._test_cba(pymol.util.cbap, (0.75, 0.0, 0.75))
|
|
|
|
def test_cbak(self):
|
|
self._test_cba(pymol.util.cbak, (1.0, 0.65, 0.85))
|
|
|
|
def test_cnc(self):
|
|
pymol.util.cnc
|
|
self.skipTest("TODO")
|
|
|
|
def test_cba(self):
|
|
pymol.util.cba
|
|
self.skipTest("TODO")
|
|
|
|
def test_cbh(self):
|
|
pymol.util.cbh
|
|
self.skipTest("TODO")
|
|
|
|
def test_enable_all_shaders(self):
|
|
pymol.util.enable_all_shaders()
|
|
# result depends on whether shaders are available or not
|
|
|
|
def test_modernize_rendering(self):
|
|
pymol.util.modernize_rendering(1) # unused mode argument
|
|
|
|
def test_performance(self):
|
|
pymol.util.performance(0)
|
|
self.assertEqual(1, cmd.get_setting_int('surface_quality'))
|
|
self.assertEqual(1, cmd.get_setting_int('depth_cue'))
|
|
pymol.util.performance(33)
|
|
self.assertEqual(0, cmd.get_setting_int('surface_quality'))
|
|
self.assertEqual(1, cmd.get_setting_int('depth_cue'))
|
|
pymol.util.performance(66)
|
|
self.assertEqual(0, cmd.get_setting_int('surface_quality'))
|
|
self.assertEqual(0, cmd.get_setting_int('depth_cue'))
|
|
pymol.util.performance(100)
|
|
self.assertEqual(-1, cmd.get_setting_int('surface_quality'))
|
|
self.assertEqual(0, cmd.get_setting_int('depth_cue'))
|
|
|
|
def test_label_chains(self, mode='chain'):
|
|
cmd.load(self.datafile('4m4b-minimal-w-assembly.cif'))
|
|
if mode == 'chain':
|
|
pymol.util.label_chains()
|
|
else:
|
|
pymol.util.label_segments()
|
|
stored.labels = set()
|
|
cmd.iterate('*', 'stored.labels.add(label)')
|
|
self.assertEqual(stored.labels, set(['', mode + ' A', mode + ' B']))
|
|
|
|
@testing.requires_version('1.7.2')
|
|
def test_label_segments(self):
|
|
self.test_label_chains('segi')
|
|
|
|
def test_cbc(self):
|
|
pymol.util.cbc
|
|
self.skipTest("TODO")
|
|
|
|
def test_color_objs(self):
|
|
pymol.util.color_objs
|
|
self.skipTest("TODO")
|
|
|
|
def test_chainbow(self):
|
|
pymol.util.chainbow
|
|
self.skipTest("TODO")
|
|
|
|
def test_ray_shadows(self):
|
|
pymol.util.ray_shadows
|
|
self.skipTest("TODO")
|
|
|
|
def test_ff_copy(self):
|
|
pymol.util.ff_copy
|
|
self.skipTest("TODO")
|
|
|
|
def test_b2vdw(self):
|
|
pymol.util.b2vdw
|
|
self.skipTest("TODO")
|
|
|
|
def test_phipsi(self):
|
|
pymol.util.phipsi
|
|
self.skipTest("TODO")
|
|
|
|
def test_rainbow(self):
|
|
pymol.util.rainbow
|
|
self.skipTest("TODO")
|
|
|
|
def test_ss(self):
|
|
pymol.util.ss
|
|
self.skipTest("TODO")
|
|
|
|
def test_colors(self):
|
|
cmd.fragment('gly')
|
|
pymol.util.colors("jmol")
|
|
stored.colors = set()
|
|
cmd.iterate('elem C', 'stored.colors.add(color)')
|
|
colors = [get_color_tuple(c, 3) for c in stored.colors]
|
|
self.assertEqual(colors, [(0.567, 0.567, 0.567)])
|
|
|
|
@testing.requires_version('1.7.6')
|
|
def test_interchain_distances(self):
|
|
pymol.util.interchain_distances
|
|
self.skipTest("TODO")
|
|
|
|
@testing.requires_version('1.8.0')
|
|
def test_get_sasa_relative(self):
|
|
cmd.load(self.datafile('1oky-frag.pdb'))
|
|
r = cmd.get_sasa_relative()
|
|
self.assertAlmostEqual(r['1oky-frag', '', 'A', '86'], 0.708, delta=1e-3)
|
|
r = cmd.get_sasa_relative("resi 86")
|
|
self.assertAlmostEqual(r['1oky-frag', '', 'A', '86'], 0.708, delta=1e-3)
|
|
|
|
@testing.requires_version('2.6')
|
|
def test_get_sasa_relative_subsele(self):
|
|
cmd.load(self.datafile('1oky-frag.pdb'))
|
|
r = cmd.get_sasa_relative(subsele="sidechain")
|
|
self.assertAlmostEqual(r['1oky-frag', '', 'A', '86'], 0.812, delta=1e-3)
|
|
r = cmd.get_sasa_relative("resi 86", subsele="sidechain")
|
|
self.assertAlmostEqual(r['1oky-frag', '', 'A', '86'], 0.812, delta=1e-3)
|
|
|
|
@testing.requires_version('1.8.6')
|
|
def test_ligand_zoom(self):
|
|
pymol.util.ligand_zoom
|
|
self.skipTest("TODO")
|