mirror of
https://github.com/schrodinger/pymol-open-source.git
synced 2026-06-04 20:04:21 +08:00
155 lines
4.6 KiB
Python
155 lines
4.6 KiB
Python
'''
|
|
Testing: pymol.importing
|
|
'''
|
|
|
|
import pytest
|
|
|
|
from pymol import cmd
|
|
|
|
from pymol.constants import ALL_STATES
|
|
|
|
|
|
def _undo_sele(sele_name,
|
|
current_sele_atom_count,
|
|
current_sele_list,
|
|
original_sele_atom_count,
|
|
original_sele_list):
|
|
assert current_sele_atom_count == cmd.count_atoms(sele_name)
|
|
assert current_sele_list == cmd.get_names("selections")
|
|
cmd.undo()
|
|
assert original_sele_list == cmd.get_names("selections")
|
|
cmd.redo()
|
|
assert current_sele_atom_count == cmd.count_atoms(sele_name)
|
|
assert current_sele_list == cmd.get_names("selections")
|
|
|
|
|
|
def test_undo_select():
|
|
cmd.fragment("gly", "m1")
|
|
NC = 2
|
|
# auto_number_selections=0
|
|
cmd.select("elem C")
|
|
_undo_sele("sele", NC, ["sele"], 0, [])
|
|
|
|
assert 0 == cmd.get_setting_int("sel_counter")
|
|
|
|
cmd.delete("sele")
|
|
|
|
|
|
def test_undo_auto_number_select():
|
|
cmd.fragment("gly", "m1")
|
|
NC = 2
|
|
# auto_number_selections=1
|
|
cmd.set('auto_number_selections', 1)
|
|
cmd.set('sel_counter', 3)
|
|
|
|
cmd.select("elem C")
|
|
_undo_sele("sel04", NC, ["sel04"], 0, [])
|
|
assert 4 == cmd.get_setting_int("sel_counter")
|
|
|
|
cmd.set('auto_number_selections', 1) # ??
|
|
|
|
cmd.select(None, "elem C")
|
|
_undo_sele("sel05", NC, ["sel04", "sel05"], 0, ["sel04"])
|
|
assert 5 == cmd.get_setting_int("sel_counter")
|
|
|
|
cmd.delete("sel*")
|
|
|
|
# name=None always numbers the selection
|
|
cmd.set('auto_number_selections', 0)
|
|
cmd.select(None, "elem C")
|
|
|
|
_undo_sele("sel06", NC, ["sel06"], 0, [])
|
|
assert 6 == cmd.get_setting_int("sel_counter")
|
|
|
|
cmd.delete("sel*")
|
|
|
|
|
|
def _undo_assert_selections(
|
|
target_sele,
|
|
prev_atom_count,
|
|
prev_all_names,
|
|
prev_enabled_names,
|
|
curr_atom_count,
|
|
curr_all_names,
|
|
curr_enabled_names,
|
|
state=ALL_STATES
|
|
):
|
|
assert curr_atom_count == cmd.count_atoms(target_sele, state=state)
|
|
assert curr_all_names == cmd.get_names("selections", enabled_only=0)
|
|
assert curr_enabled_names == cmd.get_names("selections", enabled_only=1)
|
|
cmd.undo()
|
|
assert prev_atom_count == cmd.count_atoms(target_sele, state=state)
|
|
assert prev_all_names == cmd.get_names("selections", enabled_only=0)
|
|
assert prev_enabled_names == cmd.get_names("selections", enabled_only=1)
|
|
cmd.redo()
|
|
assert curr_atom_count == cmd.count_atoms(target_sele, state=state)
|
|
assert curr_all_names == cmd.get_names("selections", enabled_only=0)
|
|
assert curr_enabled_names == cmd.get_names("selections", enabled_only=1)
|
|
|
|
|
|
def test_undo_select_merge():
|
|
cmd.fragment("gly", "m1")
|
|
NC = 2
|
|
|
|
# merge with non-existing, enable=0
|
|
cmd.select("foo", "elem C", 0, merge=1)
|
|
_undo_assert_selections("?foo", 0, [], [], NC, ["foo"], [])
|
|
|
|
# merge, enable=1
|
|
cmd.select("foo", "elem N", 1)
|
|
_undo_assert_selections("?foo", NC, ["foo"], [], 1, ["foo"], ["foo"])
|
|
|
|
cmd.select("foo", "elem C", -1, merge=1)
|
|
_undo_assert_selections(
|
|
"?foo", NC - 1, ["foo"], ["foo"], NC + 1, ["foo"], ["foo"])
|
|
|
|
cmd.select("foo", "elem O", -1, merge=2)
|
|
assert NC + 2 == cmd.count_atoms("foo")
|
|
assert ["foo"] == cmd.get_names("selections", enabled_only=0)
|
|
assert ["foo"] == cmd.get_names("selections", enabled_only=1)
|
|
|
|
# merge, enable=0
|
|
cmd.select("foo", "elem N", 1)
|
|
cmd.select("foo", "elem N", 0)
|
|
_undo_assert_selections("?foo", 1, ["foo"], ["foo"], 1, ["foo"], [])
|
|
|
|
cmd.select("foo", "elem C", -1, merge=1)
|
|
_undo_assert_selections("?foo", NC - 1, ["foo"], [], NC + 1, ["foo"], [])
|
|
|
|
cmd.select("foo", "elem O", -1, merge=2)
|
|
_undo_assert_selections("?foo", NC + 1, ["foo"], [], NC - 1, ["foo"], [])
|
|
|
|
# state
|
|
cmd.delete("sele")
|
|
cmd.create('m1', 'm1 & elem C', 1, 2)
|
|
cmd.select('present')
|
|
_undo_assert_selections("present", 7, ["foo"], [], 7, [
|
|
"foo", "sele"], ["sele"])
|
|
|
|
cmd.delete("sele")
|
|
|
|
cmd.select('present', state=1)
|
|
_undo_assert_selections("present", 7, ["foo"], [], 7, [
|
|
"foo", "sele"], ["sele"])
|
|
|
|
cmd.delete("sele")
|
|
|
|
cmd.select('present', state=2)
|
|
_undo_assert_selections("present", 2, ["foo"], [], 2, [
|
|
"foo", "sele"], ["sele"], state=2)
|
|
|
|
cmd.delete("sele")
|
|
cmd.select('present', state=3)
|
|
_undo_assert_selections("present", 0, ["foo"], [], 0, [
|
|
"foo", "sele"], ["sele"], state=3)
|
|
|
|
# domain
|
|
cmd.delete("sele")
|
|
cmd.delete("foo")
|
|
cmd.select("foo", "elem C")
|
|
|
|
# foo is disabled; must test enabled state
|
|
cmd.select("bar", "name CA+N+O", domain="foo")
|
|
_undo_assert_selections("?bar", 0, ["foo"], ["foo"], 1, [
|
|
"foo", "bar"], ["bar"])
|