def exercise_is_redundant(): edge_list = double_banana_edge_list for n in [2,3]: perm = [0,1,2] while True: el = [edge_list[i] for i in perm] rrfrm = row_reduced_float_rigidity_matrix( n_dim=3, n_vertices=3, edge_list=el[:n]) if (n == 2): assert rrfrm.dof() == 7 else: assert rrfrm.dof() == 6 for edge in el[:n]: assert rrfrm.is_redundant(edge=edge) if (n == 2): assert not rrfrm.is_redundant(el[2]) update_repeat_log(nr=rrfrm.repeats) if (not next_permutation(perm)): break # rrfrm = row_reduced_float_rigidity_matrix( n_dim=3, n_vertices=5, edge_list=edge_list[:9]) assert rrfrm.dof() == 6 for edge in edge_list[:9]: assert rrfrm.is_redundant(edge=edge) update_repeat_log(nr=rrfrm.repeats) # rrfrm = row_reduced_float_rigidity_matrix( n_dim=3, n_vertices=8, edge_list=edge_list) assert rrfrm.dof() == 7 for edge in edge_list: assert rrfrm.is_redundant(edge=edge) assert rrfrm.is_redundant(edge=(3,4)) for i in [0,1,2]: for j in [5,6,7]: assert not rrfrm.is_redundant(edge=(i,j)) update_repeat_log(nr=rrfrm.repeats) # edge_list = [ # octahedron (0,1),(0,2),(0,3),(0,4), (1,2),(2,3),(3,4),(4,1), (5,1),(5,2),(5,3),(5,4)] rrfrm = row_reduced_float_rigidity_matrix( n_dim=3, n_vertices=6, edge_list=edge_list) assert rrfrm.dof() == 6 assert rrfrm.is_redundant(edge=(0,5)) assert rrfrm.is_redundant(edge=(1,3)) assert rrfrm.is_redundant(edge=(1,3)) update_repeat_log(nr=rrfrm.repeats) # del edge_list[3] rrfrm = row_reduced_float_rigidity_matrix( n_dim=3, n_vertices=6, edge_list=edge_list) assert rrfrm.dof() == 7 assert not rrfrm.is_redundant(edge=(0,5)) assert not rrfrm.is_redundant(edge=(1,3)) assert not rrfrm.is_redundant(edge=(1,3)) update_repeat_log(nr=rrfrm.repeats)
def exercise_next_permutation(): from libtbx.math_utils import next_permutation seq = [] assert next_permutation(seq) is False seq = [0] assert next_permutation(seq) is False seq = [0, 1] assert next_permutation(seq) assert seq == [1, 0] assert not next_permutation(seq) assert seq == [0, 1] seq = [0, 1, 2] result = [] while True: result.append(tuple(seq)) if (not next_permutation(seq)): break assert result == [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)] assert seq == [0, 1, 2] expected_n = 1 for m in xrange(1, 7): expected_n *= m seq = range(m) n = 0 while True: n += 1 if (not next_permutation(seq)): break assert seq == range(m) assert n == expected_n
def exercise_next_permutation(): from libtbx.math_utils import next_permutation seq = [] assert next_permutation(seq) is False seq = [0] assert next_permutation(seq) is False seq = [0,1] assert next_permutation(seq) assert seq == [1, 0] assert not next_permutation(seq) assert seq == [0, 1] seq = [0,1,2] result = [] while True: result.append(tuple(seq)) if (not next_permutation(seq)): break assert result == [ (0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)] assert seq == [0,1,2] expected_n = 1 for m in xrange(1,7): expected_n *= m seq = range(m) n = 0 while True: n += 1 if (not next_permutation(seq)): break assert seq == range(m) assert n == expected_n