Ejemplo n.º 1
0
 def test_improper_fake(self):
     site1 = Site(name='site1')
     site2 = Site(name='site2')
     site3 = Site(name='site3')
     site4 = Site(name='site4')
     with pytest.raises(GMSOError):
         Improper(connection_members=['fakesite1', 'fakesite2', 4.2])
Ejemplo n.º 2
0
 def test_bond_fake_ctype(self):
     site1 = Site(name='site1')
     site2 = Site(name='site2')
     with pytest.raises(GMSOError):
         Connection(connection_members=[site1, site2],
                    connection_type='Fake ctype',
                    name='fake')
Ejemplo n.º 3
0
 def test_angle_fake_angletype(self):
     site1 = Site(name='site1')
     site2 = Site(name='site2')
     site3 = Site(name='site3')
     with pytest.raises(GMSOError):
         Angle(connection_members=[site1, site2, site3],
               connection_type='Fake angletype')
Ejemplo n.º 4
0
    def test_set_with_atom_type(self):
        lithium_type = AtomType(mass=6.941, charge=1)
        site = Site(name='Lithium')
        site.atom_type = lithium_type

        assert site.charge == 1 * u.elementary_charge
        assert site.mass == 6.941 * u.gram / u.mol
Ejemplo n.º 5
0
def _get_atoms(filename, topology, unit_style, type_list):
    """Function to parse the atom information in the LAMMPS data file
    """
    with open(filename, 'r') as lammps_file:
        for i, line in enumerate(lammps_file):
            if 'atoms' in line.split():
                n_atoms = int(line.split()[0])
            if 'Atoms' in line.split():
                break
    atom_lines = open(filename, 'r').readlines()[i+2:i+n_atoms+2]
    for line in atom_lines:
        atom_line = line.split()
        atom_type = atom_line[2]
        charge = u.unyt_quantity(float(atom_line[3]), get_units(unit_style)['charge'])
        coord = u.angstrom * u.unyt_array([
            float(atom_line[4]),
            float(atom_line[5]),
            float(atom_line[6])])
        site = Site(
            charge=charge,
            position=coord,
            atom_type=type_list[int(atom_type)-1]
            )
        element = element_by_mass(site.atom_type.mass.value)
        site.name = element.name
        site.element = element
        topology.add_site(site)

    topology.update_sites()

    return topology
Ejemplo n.º 6
0
 def test_dihedral_fake(self):
     site1 = Site(name='site1')
     site2 = Site(name='site2')
     site3 = Site(name='site3')
     site4 = Site(name='site4')
     with pytest.raises(GMSOError):
         Dihedral(connection_members=['fakesite1', 'fakesite2', 4.2])
Ejemplo n.º 7
0
 def test_dihedral_fake_dihedraltype(self):
     site1 = Site(name='site1')
     site2 = Site(name='site2')
     site3 = Site(name='site3')
     site4 = Site(name='site4')
     with pytest.raises(GMSOError):
         Dihedral(connection_members=[site1, site2, site3, site4],
                  connection_type='Fake dihedraltype')
Ejemplo n.º 8
0
 def test_improper_fake_impropertype(self):
     site1 = Site(name='site1')
     site2 = Site(name='site2')
     site3 = Site(name='site3')
     site4 = Site(name='site4')
     with pytest.raises(GMSOError):
         Improper(connection_members=[site1, site2, site3, site4],
               connection_type='Fake impropertype')
Ejemplo n.º 9
0
    def test_connection_eq(self):
        site1 = Site(name='site1', position=[0, 0, 0])
        site2 = Site(name='site2', position=[1, 1, 1])

        ref_connection = Connection(connection_members=[site1, site2], )

        same_connection = Connection(connection_members=[site1, site2], )
        # Two connections are never equal
        assert ref_connection != same_connection
Ejemplo n.º 10
0
 def test_equivalence(self):
     ref = Site(name='site', position=u.nm * np.zeros(3))
     same_site = Site(name='site', position=u.nm * np.zeros(3))
     other_pos = Site(name='site', position=u.nm * np.ones(3))
     other_name = Site(name='site', position=u.nm * np.ones(3))
     # Two sites are never equivalent
     assert ref != same_site
     assert ref != other_pos
     assert ref != other_name
Ejemplo n.º 11
0
 def test_add_connection_non_member(self):
     site1, site2, site3 = (Site(), Site(), Site())
     bond1, bond2, bond3 = (Bond([site1, site2]), Bond([site2, site3]),
                            Bond([site1, site3]))
     assert site1.n_connections == site2.n_connections == site3.n_connections == 2
     with pytest.raises(GMSOError):
         site3.add_connection(bond1)
         site2.add_connection(bond3)
         site1.add_connection(bond2)
Ejemplo n.º 12
0
 def test_with_1000_atom_types(self):
     top = Topology()
     for i in range(1000):
         site = Site()
         atom_type = AtomType()
         site.atom_type = atom_type
         top.add_site(site, update_types=False)
     top.update_topology()
     assert len(top.atom_types) == 1
     assert top.n_sites == 1000
Ejemplo n.º 13
0
    def test_add_connection(self):
        top = Topology()
        site1 = Site(name='site1')
        site2 = Site(name='site2')
        connect = Bond(connection_members=[site1, site2])

        top.add_connection(connect)
        top.add_site(site1)
        top.add_site(site2)

        assert len(top.connections) == 1
Ejemplo n.º 14
0
    def test_connection_nonparametrized(self):
        site1 = Site(name='site1')
        site2 = Site(name='site2')

        assert site1.n_connections == 0
        assert site2.n_connections == 0

        connect = Connection(connection_members=[site1, site2])

        assert site1.n_connections == 1
        assert site2.n_connections == 1
        assert connect.connection_type is None
Ejemplo n.º 15
0
    def test_bond_eq(self):
        site1 = Site(name='site1', position=[0, 0, 0])
        site2 = Site(name='site2', position=[1, 1, 1])

        ref_connection = Bond(connection_members=[site1, site2], )

        same_connection = Bond(connection_members=[site1, site2], )

        diff_connection = Bond(connection_members=[site1, site2], )

        assert ref_connection != same_connection
        assert ref_connection != diff_connection
Ejemplo n.º 16
0
 def test_add_connection_redundant(self):
     site1, site2, site3 = (Site(), Site(), Site())
     bond1, bond2, bond3 = (Bond([site1, site2]), Bond([site2, site3]),
                            Bond([site1, site3]))
     assert site1.n_connections == site2.n_connections == site3.n_connections == 2
     site1.add_connection(bond1)
     site1.add_connection(bond3)
     site2.add_connection(bond1)
     site2.add_connection(bond2)
     site3.add_connection(bond3)
     site3.add_connection(bond2)
     assert site1.n_connections == site2.n_connections == site3.n_connections == 2
Ejemplo n.º 17
0
    def test_angle_eq(self):
        site1 = Site(name='site1', position=[0, 0, 0])
        site2 = Site(name='site2', position=[1, 1, 1])
        site3 = Site(name='site3', position=[1, 1, 1])

        ref_angle = Angle(connection_members=[site1, site2, site3], )

        same_angle = Angle(connection_members=[site1, site2, site3], )

        diff_angle = Angle(connection_members=[site3, site2, site1], )

        assert ref_angle != same_angle
        assert ref_angle != diff_angle
Ejemplo n.º 18
0
 def test_topology_atom_type_changes(self):
     top = Topology()
     for i in range(100):
         site = Site(name='site{}'.format(i))
         atom_type = AtomType(name='atom_type{}'.format(i % 10))
         site.atom_type = atom_type
         top.add_site(site, update_types=False)
     top.update_topology()
     assert len(top.atom_types) == 10
     top.sites[0].atom_type.name = 'atom_type_changed'
     assert id(top.sites[0].atom_type) == id(top.sites[10].atom_type)
     assert top.sites[10].atom_type.name == 'atom_type_changed'
     assert top.is_typed()
Ejemplo n.º 19
0
 def test_bond_constituent_types(self):
     site1 = Site(name='site1',
                  position=[0, 0, 0],
                  atom_type=AtomType(name='A'))
     site2 = Site(name='site2',
                  position=[1, 0, 0],
                  atom_type=AtomType(name='B'))
     bondtype = BondType(
         member_types=[site1.atom_type.name, site2.atom_type.name])
     bond = Bond(connection_members=[site1, site2],
                 connection_type=bondtype)
     assert 'A' in bond.connection_type.member_types
     assert 'B' in bond.connection_type.member_types
Ejemplo n.º 20
0
    def test_top_update(self):
        top = Topology()
        top.update_topology()
        assert top.n_sites == 0
        assert len(top.atom_types) == 0
        assert len(top.atom_type_expressions) == 0
        assert top.n_connections == 0
        assert len(top.connection_types) == 0
        assert len(top.connection_type_expressions) == 0

        atomtype = AtomType()
        site1 = Site(name='site1', atom_type=atomtype)
        top.add_site(site1)
        site2 = Site(name='site2', atom_type=atomtype)
        top.add_site(site2)

        assert top.n_sites == 2
        assert len(top.atom_types) == 1
        assert len(top.atom_type_expressions) == 1
        assert top.n_connections == 0
        assert len(top.connection_types) == 0
        assert len(top.connection_type_expressions) == 0


        ctype = BondType()
        connection_12 = Bond(connection_members=[site1, site2],
                             connection_type=ctype)
        top.add_connection(connection_12)

        assert top.n_sites == 2
        assert len(top.atom_types) == 1
        assert len(top.atom_type_expressions) == 1
        assert top.n_connections == 1
        assert len(top.connection_types) == 1
        assert len(top.connection_type_expressions) == 1

        site1.atom_type = AtomType(expression='sigma*epsilon')
        assert top.n_sites == 2
        assert len(top.atom_types) == 1
        assert len(top.atom_type_expressions) == 1
        assert top.n_connections == 1
        assert len(top.connection_types) == 1
        assert len(top.connection_type_expressions) == 1
        top.update_atom_types()
        assert top.n_sites == 2
        assert len(top.atom_types) == 2
        assert len(top.atom_type_expressions) == 2
        assert top.n_connections == 1
        assert len(top.connection_types) == 1
        assert len(top.connection_type_expressions) == 1
Ejemplo n.º 21
0
    def test_add_untyped_bond_update(self):
        site1 = Site(atom_type=None)
        site2 = Site(atom_type=None)
        bond = Bond(connection_members=[site1, site2], connection_type=None)

        top = Topology()
        assert len(top.bond_types) == 0
        top.add_connection(bond, update_types=False)
        assert len(top.bond_types) == 0

        top = Topology()
        assert len(top.bond_types) == 0
        top.add_connection(bond, update_types=True)
        assert len(top.bond_types) == 0
Ejemplo n.º 22
0
 def test_improper_constituent_types(self):
     site1 = Site(name='site1', position=[0,0,0], atom_type=AtomType(name='A'))
     site2 = Site(name='site2', position=[1,0,0], atom_type=AtomType(name='B'))
     site3 = Site(name='site3', position=[1,1,0], atom_type=AtomType(name='C'))
     site4 = Site(name='site4', position=[1,1,4], atom_type=AtomType(name='D'))
     imptype = ImproperType(member_types=[site1.atom_type.name, 
                                          site2.atom_type.name,
                                          site3.atom_type.name,
                                          site4.atom_type.name])
     imp = Improper(connection_members=[site1, site2, site3, site4], 
             connection_type=imptype)
     assert 'A' in imp.connection_type.member_types
     assert 'B' in imp.connection_type.member_types
     assert 'C' in imp.connection_type.member_types
     assert 'D' in imp.connection_type.member_types
Ejemplo n.º 23
0
    def test_angle_nonparametrized(self):
        site1 = Site(name='site1')
        site2 = Site(name='site2')
        site3 = Site(name='site3')

        assert site1.n_connections == 0
        assert site2.n_connections == 0
        assert site3.n_connections == 0

        connect = Angle(connection_members=[site1, site2, site3])

        assert site1.n_connections == 1
        assert site2.n_connections == 1
        assert site3.n_connections == 1
        assert connect.connection_type is None
Ejemplo n.º 24
0
    def test_add_site_parent(self):
        top = Topology()
        subtop = SubTopology()
        site1 = Site(position=u.nm * np.zeros(3))
        site2 = Site(position=u.nm * np.ones(3))
        top.add_subtopology(subtop)

        assert top.n_sites == 0
        assert subtop.n_sites == 0
        subtop.add_site(site1)
        assert top.n_sites == 1
        assert subtop.n_sites == 1
        top.add_site(site2)
        assert top.n_sites == 2
        assert subtop.n_sites == 1
Ejemplo n.º 25
0
    def test_add_site(self):
        top = Topology()
        site = Site(name='site')

        assert top.n_sites == 0
        top.add_site(site)
        assert top.n_sites == 1
Ejemplo n.º 26
0
    def test_to_mbuild_name_none(self):
        top = Top()
        top.add_site(Site())
        top.name = None
        compound = to_mbuild(top)

        assert compound.name == 'Compound'
Ejemplo n.º 27
0
    def test_bond_bondtype_update(self):
        top = Topology()

        atype1 = AtomType(expression='sigma + epsilon')
        atype2 = AtomType(expression='sigma * epsilon')
        site1 = Site('a', atom_type=atype1)
        site2 = Site('b', atom_type=atype2)
        btype = BondType()
        bond = Bond(connection_members=[site1, site2], connection_type=btype)
        top.add_site(site1)
        top.add_site(site2)
        top.add_connection(bond)

        assert top.n_bonds == 1
        assert len(top.bond_types) == 1
        assert len(top.bond_type_expressions) == 1
Ejemplo n.º 28
0
    def test_subtop_add_site(self):
        subtop = SubTopology()
        site = Site()

        subtop.add_site(site)

        assert subtop.n_sites == 1
Ejemplo n.º 29
0
    def test_atomtype_update(self):
        top = Topology()

        assert top.n_sites == 0
        assert top.n_bonds == 0
        assert top.n_connections == 0

        atype1 = AtomType(expression='sigma + epsilon')
        atype2 = AtomType(expression='sigma * epsilon')
        site1 = Site('a', atom_type=atype1)
        site2 = Site('b', atom_type=atype2)
        top.add_site(site1)
        top.add_site(site2)

        assert top.n_sites == 2
        assert len(top.atom_types) == 2
        assert len(top.atom_type_expressions) == 2
Ejemplo n.º 30
0
    def test_dihedral_eq(self):
        site1 = Site(name='site1', position=[0, 0, 0])
        site2 = Site(name='site2', position=[1, 0, 0])
        site3 = Site(name='site3', position=[1, 1, 0])
        site4 = Site(name='site4', position=[1, 1, 1])

        ref_dihedral = Dihedral(
            connection_members=[site1, site2, site3, site4], )

        same_dihedral = Dihedral(
            connection_members=[site1, site2, site3, site4], )

        diff_dihedral = Dihedral(
            connection_members=[site1, site2, site3, site4], )

        assert ref_dihedral != same_dihedral
        assert ref_dihedral != diff_dihedral