Source code for rpxdock.tests.sampling.test_orientations

import sys
import gzip
import numpy as np
import rpxdock.sampling.orientations as ori
import pytest

from cppimport import import_hook
from rpxdock.sampling._orientations_test import *

[docs]def test_orientation_cpp(): assert TEST_Orientation_read_karney_datasets()
[docs]def test_read_karney_orientations(): with gzip.open(ori.karney_data_path("c48u1.grid.gz")) as input: if sys.version_info.major is 3: quat, weight = ori.read_karney_orientations(str(input.read(), "utf-8")) else: quat, weight = ori.read_karney_orientations(str(input.read())) norms = np.linalg.norm(quat, axis=1) assert np.all(np.abs(1.0 - norms) < 0.0001) assert np.min(weight) == np.max(weight) == 1.0
[docs]def test_karney_oddball(): with pytest.raises(IOError): ori.quaternion_set_by_name("foobar")
[docs]def test_karney_10(): quat, weight = ori.quaternion_set_with_covering_radius_degrees(10) assert len(quat) == 7416 print(weight[:10]) assert abs(1.0 - weight.mean()) < 0.00001
[docs]def test_karney_lengths_weights(): # only check smallest 20 for speed for name in ori._karney_index.name[:20]: quat, weight = ori.quaternion_set_by_name(name) assert len(weight) assert abs(1.0 - weight.mean()) < 1e-6 norms = np.linalg.norm(quat, axis=1) assert np.all(np.abs(1.0 - norms) < 0.0001)
[docs]def test_karney_by_covrad(): assert ori.karney_name_by_radius(100) == "c48u1" assert ori.karney_name_by_radius(30) == "c48u27" assert ori.karney_name_by_radius(20) == "c48u83" assert ori.karney_name_by_radius(10) == "c48n309" assert ori.karney_name_by_radius(8) == "c48u815" assert ori.karney_name_by_radius(5) == "c48u2947" assert ori.karney_name_by_radius(2) == "c48u40003" assert ori.karney_name_by_radius(1) == "c48u295333" assert ori.karney_name_by_radius(0) == "c48u312831"
# def test_filter_by_axis(): # q, w = ori.quaternion_set_with_covering_radius_degrees(100) # print q.shape # q_filt = ori.filter_quaternion_set_axis_within( # q, np.array((1, 0, 0)), 90.0) # assert len(q_filt) < len(q)