def testJACPMESwitch(self):
        """ Tests the DHFR Gromacs system nrg and force (PME w/ switch) """
        # Load the top and gro files
        top = load_file(os.path.join(get_fn('10.DHFR-PME-Switch'), 'topol.top'))
        gro = load_file(os.path.join(get_fn('10.DHFR-PME-Switch'), 'conf.gro'))
        top.box = gro.box[:]

        # Create the system and context, then calculate the energy decomposition
        system = top.createSystem(nonbondedMethod=app.PME,
                                  constraints=app.HBonds,
                                  nonbondedCutoff=0.9*u.nanometers,
                                  ewaldErrorTolerance=1.0e-5)
        context = mm.Context(system, mm.VerletIntegrator(0.001), mm.Platform.getPlatformByName('CPU'))
        context.setPositions(gro.positions)
        energies = energy_decomposition(top, context, nrg=u.kilojoules_per_mole)

        # Compare with Lee-Ping's answers. Make sure we zero-out forces for
        # virtual sites, since OMM doesn't do this and Gromacs does.
        self.assertAlmostEqual(energies['bond'], 1628.54739, places=3)
        self.assertAlmostEqual(energies['angle'], 3604.58751, places=3)
        self.assertAlmostEqual(energies['dihedral'], 6490.00844, delta=0.002)
        self.assertRelativeEqual(energies['nonbonded'], 23616.457584, places=3)
        gmxfrc = get_forces_from_xvg(
                os.path.join(get_fn('10.DHFR-PME-Switch'), 'force.xvg'))
        ommfrc = context.getState(getForces=True).getForces().value_in_unit(
                    u.kilojoules_per_mole/u.nanometer)
        zero_ep_frc(ommfrc, top)
        max_diff = get_max_diff(gmxfrc, ommfrc)
        self.assertLess(max_diff, 5)
 def testWriteCharmm27Top(self):
     """ Tests writing a Gromacs topology file with CHARMM 27 FF """
     top = load_file(get_fn('1aki.charmm27.top'))
     GromacsTopologyFile.write(top,
             get_fn('1aki.charmm27.top', written=True))
     top2 = load_file(get_fn('1aki.charmm27.top', written=True))
     self._charmm27_checks(top)
    def testJAC(self):
        """ Tests the JAC benchmark Gromacs system nrg and force (no PBC) """
        # Load the top and gro files
        top = load_file(os.path.join(get_fn('07.DHFR-Liquid-NoPBC'), 'topol.top'))
        gro = load_file(os.path.join(get_fn('07.DHFR-Liquid-NoPBC'), 'conf.gro'))

        # Create the system and context, then calculate the energy decomposition
        system = top.createSystem()
        context = mm.Context(system, mm.VerletIntegrator(0.001), mm.Platform.getPlatformByName('CPU'))
        context.setPositions(gro.positions)
        energies = energy_decomposition(top, context, nrg=u.kilojoules_per_mole)

        # Compare with Lee-Ping's answers. Make sure we zero-out forces for
        # virtual sites, since OMM doesn't do this and Gromacs does.
        self.assertAlmostEqual(energies['bond'], 35.142565, places=3)
        self.assertAlmostEqual(energies['angle'], 3735.514669, places=3)
        self.assertAlmostEqual(energies['dihedral'], 7277.741635, delta=0.002)
        self.assertRelativeEqual(energies['nonbonded'], -288718.981405, places=4)
        gmxfrc = get_forces_from_xvg(
                os.path.join(get_fn('07.DHFR-Liquid-NoPBC'), 'force.xvg'))
        ommfrc = context.getState(getForces=True).getForces().value_in_unit(
                    u.kilojoules_per_mole/u.nanometer)
        zero_ep_frc(ommfrc, top)
        max_diff = get_max_diff(gmxfrc, ommfrc)
        self.assertLess(max_diff, 0.5)
 def testDuplicateSystemNames(self):
     """ Tests that Gromacs topologies never have duplicate moleculetypes """
     parm = load_file(get_fn('phenol.prmtop'))
     parm = parm * 20 + load_file(get_fn('biphenyl.prmtop')) * 20
     top = GromacsTopologyFile.from_structure(parm)
     top.write(get_fn('phenol_biphenyl.top', written=True))
     top2 = GromacsTopologyFile(get_fn('phenol_biphenyl.top', written=True))
     self.assertEqual(len(top.residues), 40)
 def testWriteAmber99SBILDN(self):
     """ Tests writing a Gromacs topology with multiple molecules """
     top = load_file(get_fn('1aki.ff99sbildn.top'))
     GromacsTopologyFile.write(top,
             get_fn('1aki.ff99sbildn.top', written=True),
             combine=None)
     top2 = load_file(get_fn('1aki.ff99sbildn.top', written=True))
     self._check_ff99sbildn(top2)
     self._check_equal_structures(top, top2)
Exemple #6
0
def main():
    """ The main function """
    global excepthook, debug
    # Launch the root window
    root = tk.Tk()
    root.resizable(True, True)

    # Replace the default excepthook with mine
    sys.excepthook = excepthook

    # See if we were provided a topology file on the command-line
    parser = OptionParser(usage='%prog [<prmtop>]')
    parser.add_option('-d',
                      '--debug',
                      dest='debug',
                      default=False,
                      action='store_true',
                      help='Show detailed tracebacks ' +
                      'when an error is detected.')
    opt, args = parser.parse_args()

    debug = opt.debug

    # If the user provided a CL argument, that is the prmtop_name. Otherwise,
    # open up a file choosing dialog box to get the input from the user
    if len(args) == 0:
        prmtop_name = file_chooser('Topology')
    elif len(args) == 1:
        prmtop_name = args[0]
    else:
        sys.stderr.write('Unknown command-line options. Ignoring\n')
        prmtop_name = file_chooser('Topology')

    # If we chose no prmtop file,
    if not prmtop_name: raise ParmError('No prmtop chosen!')

    # Load the amber prmtop and check for errors
    amber_prmtop = ParmList()
    parm = load_file(prmtop_name)
    amber_prmtop.add_parm(parm)

    # Make this overwritable -- the all of the file save boxes will ask the user
    # for verification before saving over an existing file. There's no need for
    # the AmberParm security layer.
    Action.overwrite = True

    fname = split(prmtop_name)[1]
    root.title('xParmED: Editing/viewing [%s] Choose an operation' % fname)

    # Now build the action list on root
    app = ParmedApp(root, amber_prmtop)
    app.pack(fill=tk.BOTH, expand=1)
    root.mainloop()

    print('Thank you for using xParmEd!\n%s' % Logo())
    def testTiny(self):
        """ Test tiny Gromacs system nrg and frc (no PBC) """
        # Load the top and gro files
        top = load_file(os.path.join(get_fn('01.1water'), 'topol.top'))
        gro = load_file(os.path.join(get_fn('01.1water'), 'conf.gro'))

        # create the system and context, then calculate the energy decomposition
        system = top.createSystem(constraints=app.HBonds, rigidWater=True)
        context = mm.Context(system, mm.VerletIntegrator(0.001), mm.Platform.getPlatformByName('CPU'))
        context.setPositions(gro.positions)
        energies = energy_decomposition(top, context, nrg=u.kilojoules_per_mole)

        # Make sure they match Lee-Ping's answers (both energies and forces)
        self.assertAlmostEqual(energies['bond'], 1.63805, places=4)
        self.assertAlmostEqual(energies['angle'], 0.014803, places=4)
        gmxfrc = get_forces_from_xvg(os.path.join(get_fn('01.1water'), 'force.xvg'))
        ommfrc = context.getState(getForces=True).getForces().value_in_unit(
                    u.kilojoules_per_mole/u.nanometer)
        max_diff = get_max_diff(gmxfrc, ommfrc)
        self.assertLess(max_diff, 0.01)
Exemple #8
0
def randomize_mol2_residue_names(mol2_filenames):
    """Find unique residue names for a list of MOL2 files.  Then
    re-write the MOL2 files using ParmEd with the unique identifiers.
    """
    import chemistry    
    names = get_unique_names(len(mol2_filenames))

    for k, filename in enumerate(mol2_filenames):
        struct = chemistry.load_file(filename)
        struct.name = names[k]
        mol2file = chemistry.formats.Mol2File
        mol2file.write(struct, filename)
Exemple #9
0
def main():
    """ The main function """
    global excepthook, debug
    # Launch the root window
    root = tk.Tk()
    root.resizable(True, True)

    # Replace the default excepthook with mine
    sys.excepthook = excepthook

    # See if we were provided a topology file on the command-line
    parser = OptionParser(usage = '%prog [<prmtop>]')
    parser.add_option('-d', '--debug', dest='debug', default=False, 
                      action='store_true', help='Show detailed tracebacks ' +
                      'when an error is detected.')
    opt, args = parser.parse_args()

    debug = opt.debug

    # If the user provided a CL argument, that is the prmtop_name. Otherwise,
    # open up a file choosing dialog box to get the input from the user
    if len(args) == 0:
        prmtop_name = file_chooser('Topology')
    elif len(args) == 1:
        prmtop_name = args[0]
    else:
        sys.stderr.write('Unknown command-line options. Ignoring\n')
        prmtop_name = file_chooser('Topology')

    # If we chose no prmtop file, 
    if not prmtop_name: raise ParmError('No prmtop chosen!')

    # Load the amber prmtop and check for errors
    amber_prmtop = ParmList()
    parm = load_file(prmtop_name)
    amber_prmtop.add_parm(parm)

    # Make this overwritable -- the all of the file save boxes will ask the user
    # for verification before saving over an existing file. There's no need for
    # the AmberParm security layer.
    Action.overwrite = True

    fname = split(prmtop_name)[1]
    root.title('xParmED: Editing/viewing [%s] Choose an operation' % fname)

    # Now build the action list on root
    app = ParmedApp(root, amber_prmtop)
    app.pack(fill=tk.BOTH, expand=1)
    root.mainloop()

    print('Thank you for using xParmEd!\n%s' % Logo())
    def testVerySmall(self):
        """ Test very small Gromacs system nrg and frc (no PBC) """
        # Load the top and gro files
        top = load_file(os.path.join(get_fn('02.6water'), 'topol.top'))
        gro = load_file(os.path.join(get_fn('02.6water'), 'conf.gro'))

        # create the system and context, then calculate the energy decomposition
        system = top.createSystem(constraints=app.HBonds, rigidWater=True,
                                  flexibleConstraints=True)
        context = mm.Context(system, mm.VerletIntegrator(0.001), mm.Platform.getPlatformByName('CPU'))
        context.setPositions(gro.positions)
        energies = energy_decomposition(top, context, nrg=u.kilojoules_per_mole)

        # Compare with Lee-Ping's answers. Make sure we zero-out forces for
        # virtual sites, since OMM doesn't do this and Gromacs does.
        self.assertAlmostEqual(energies['bond'], 0, places=4)
        self.assertAlmostEqual(energies['nonbonded'], -108.277803, places=3)
        gmxfrc = get_forces_from_xvg(os.path.join(get_fn('02.6water'), 'force.xvg'))
        ommfrc = context.getState(getForces=True).getForces().value_in_unit(
                    u.kilojoules_per_mole/u.nanometer)
        zero_ep_frc(ommfrc, top)
        max_diff = get_max_diff(gmxfrc, ommfrc)
        self.assertLess(max_diff, 0.05)
    def testSmallDoublePeptide(self):
        """ Test interacting peptides Gromacs system nrg and frc (no PBC) """
        # Load the top and gro files
        top = load_file(os.path.join(get_fn('03.AlaGlu'), 'topol.top'))
        gro = load_file(os.path.join(get_fn('03.AlaGlu'), 'conf.gro'))
        # create the system and context, then calculate the energy decomposition
        system = top.createSystem()
        context = mm.Context(system, mm.VerletIntegrator(0.001), mm.Platform.getPlatformByName('CPU'))
        context.setPositions(gro.positions)
        energies = energy_decomposition(top, context, nrg=u.kilojoules_per_mole)

        # Compare with Lee-Ping's answers. Make sure we zero-out forces for
        # virtual sites, since OMM doesn't do this and Gromacs does.
        self.assertAlmostEqual(energies['bond'], 1.5307999, places=4)
        self.assertAlmostEqual(energies['angle'], 6.5804488, places=4)
        self.assertAlmostEqual(energies['dihedral'], 80.379714, places=4)
        self.assertAlmostEqual(energies['nonbonded'], -275.142487, places=3)
        gmxfrc = get_forces_from_xvg(os.path.join(get_fn('03.AlaGlu'), 'force.xvg'))
        ommfrc = context.getState(getForces=True).getForces().value_in_unit(
                    u.kilojoules_per_mole/u.nanometer)
        zero_ep_frc(ommfrc, top)
        max_diff = get_max_diff(gmxfrc, ommfrc)
        self.assertLess(max_diff, 0.05)
 def testDistanceBasedMaskPDB(self):
     """ Test distance-based mask selections on a PDB file """
     parm = load_file(get_fn('4lzt.pdb'))
     # All atoms within 5 A of residue 8
     mask1 = mask.AmberMask(parm, ':8<@5')
     sel = mask1.Selection()
     self.assertGreater(sum(sel), 0)
     for i, atom in enumerate(parm.atoms):
         for j, a2 in enumerate(parm.residues[7]):
             dx = atom.xx - a2.xx
             dy = atom.xy - a2.xy
             dz = atom.xz - a2.xz
             if dx*dx + dy*dy + dz*dz < 25:
                 self.assertTrue(sel[i])
                 break
         else:
             self.assertFalse(sel[i])
    def testAmoebaParmPandas(self):
        """ Tests creating a pandas DataFrame from an AmoebaParm """
        parm = load_file(get_fn('nma.parm7'))
        df = parm.to_dataframe()
        self.assertEqual(df.shape[0], parm.ptr('natom'))
        multipoles = [
            'multipole_111', 'multipole_211', 'multipole_212', 'multipole_222',
            'multipole_411', 'multipole_412', 'multipole_422', 'multipole_413',
            'multipole_423', 'multipole_433'
        ]
        for i, r1 in df.iterrows():
            self.assertEqual(r1.charge, parm.atoms[i].charge)
            self.assertEqual(r1['name'], parm.atoms[i].name)
            self.assertEqual(r1.radii, parm.atoms[i].radii)
            self.assertEqual(r1.screen, parm.atoms[i].screen)
            self.assertEqual(r1.type, parm.atoms[i].type)
            self.assertEqual(r1.occupancy, parm.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, parm.atoms[i].bfactor)
            self.assertEqual(r1.altloc, parm.atoms[i].altloc)
            self.assertEqual(r1.rmin, parm.atoms[i].rmin)
            self.assertEqual(r1.epsilon, parm.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, parm.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, parm.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, parm.atoms[i].residue.name)
            self.assertEqual(r1.resid, parm.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, parm.atoms[i].residue.number)
            self.assertEqual(r1.chain, parm.atoms[i].residue.chain)
            self.assertEqual(r1.join, parm.atoms[i].join)
            self.assertEqual(r1.nb_idx, parm.atoms[i].nb_idx)
            self.assertEqual(r1.type_idx, parm.atoms[i].type_idx)
            self.assertEqual(r1.class_idx, parm.atoms[i].class_idx)
            self.assertTrue(
                np.all(r1[multipoles] == np.array(parm.atoms[i].multipoles)))
            self.assertEqual(r1.polarizability, parm.atoms[i].polarizability)
            self.assertEqual(r1.vdw_parent, parm.atoms[i].vdw_parent.idx)

        self.assertNotIn('xx', df)
        self.assertNotIn('xy', df)
        self.assertNotIn('xz', df)
        self.assertNotIn('vx', df)
        self.assertNotIn('vy', df)
        self.assertNotIn('vz', df)
        self.assertNotIn('segid', df)
    def testAmoebaParmPandas(self):
        """ Tests creating a pandas DataFrame from an AmoebaParm """
        parm = load_file(get_fn('nma.parm7'))
        df = parm.to_dataframe()
        self.assertEqual(df.shape[0], parm.ptr('natom'))
        multipoles = ['multipole_111', 'multipole_211', 'multipole_212',
                      'multipole_222', 'multipole_411', 'multipole_412',
                      'multipole_422', 'multipole_413', 'multipole_423',
                      'multipole_433']
        for i, r1 in df.iterrows():
            self.assertEqual(r1.charge, parm.atoms[i].charge)
            self.assertEqual(r1['name'], parm.atoms[i].name)
            self.assertEqual(r1.radii, parm.atoms[i].radii)
            self.assertEqual(r1.screen, parm.atoms[i].screen)
            self.assertEqual(r1.type, parm.atoms[i].type)
            self.assertEqual(r1.occupancy, parm.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, parm.atoms[i].bfactor)
            self.assertEqual(r1.altloc, parm.atoms[i].altloc)
            self.assertEqual(r1.rmin, parm.atoms[i].rmin)
            self.assertEqual(r1.epsilon, parm.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, parm.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, parm.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, parm.atoms[i].residue.name)
            self.assertEqual(r1.resid, parm.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, parm.atoms[i].residue.number)
            self.assertEqual(r1.chain, parm.atoms[i].residue.chain)
            self.assertEqual(r1.join, parm.atoms[i].join)
            self.assertEqual(r1.nb_idx, parm.atoms[i].nb_idx)
            self.assertEqual(r1.type_idx, parm.atoms[i].type_idx)
            self.assertEqual(r1.class_idx, parm.atoms[i].class_idx)
            self.assertTrue(np.all(r1[multipoles] ==
                np.array(parm.atoms[i].multipoles)))
            self.assertEqual(r1.polarizability, parm.atoms[i].polarizability)
            self.assertEqual(r1.vdw_parent, parm.atoms[i].vdw_parent.idx)

        self.assertNotIn('xx', df)
        self.assertNotIn('xy', df)
        self.assertNotIn('xz', df)
        self.assertNotIn('vx', df)
        self.assertNotIn('vy', df)
        self.assertNotIn('vz', df)
        self.assertNotIn('segid', df)
 def testWriteGroFile(self):
     """ Tests writing GRO file """
     gro = GromacsGroFile.parse(get_fn('1aki.ff99sbildn.gro'))
     GromacsGroFile.write(gro, get_fn('1aki.ff99sbildn.gro', written=True))
     gro = load_file(get_fn('1aki.ff99sbildn.gro', written=True))
     self.assertIsInstance(gro, Structure)
     self.assertEqual(len(gro.atoms), 1960)
     self.assertEqual(len(gro.residues), 129)
     self.assertAlmostEqual(gro.atoms[0].xx, 44.6)
     self.assertAlmostEqual(gro.atoms[0].xy, 49.86)
     self.assertAlmostEqual(gro.atoms[0].xz, 18.10)
     self.assertAlmostEqual(gro.atoms[1959].xx, 50.97)
     self.assertAlmostEqual(gro.atoms[1959].xy, 39.80)
     self.assertAlmostEqual(gro.atoms[1959].xz, 38.64)
     self.assertAlmostEqual(gro.box[0], 74.1008)
     self.assertAlmostEqual(gro.box[1], 74.10080712)
     self.assertAlmostEqual(gro.box[2], 74.10074585)
     self.assertAlmostEqual(gro.box[3], 70.52882666)
     self.assertAlmostEqual(gro.box[4], 109.47126278)
     self.assertAlmostEqual(gro.box[5], 70.52875398)
Exemple #16
0
 def add_parm(self, parm):
     """ Add a parm to the list """
     # Make sure this parm is not part of the list already
     if isinstance(parm, string_types):
         if parm in self._parm_names:
             raise DuplicateParm('%s already in ParmList' % parm)
         try:
             parm = load_file(parm)
         except FormatNotFound:
             raise ParmError('Could not determine file type of %s' % parm)
         if not isinstance(parm, Structure):
             raise ParmError('Added parm must be Structure or a subclass')
     elif not isinstance(parm, Structure):
         raise ParmError('Added parm must be Structure or a subclass')
         if str(parm) in self._parm_names:
             raise DuplicateParm('%s already in ParmList' % parm)
     # Otherwise, add in the new parm's name
     self._parm_names.append(str(parm))
     self._parm_instances.append(parm)
     # A newly added topology file is the currently active parm
     self.current_index = len(self._parm_instances) - 1
     self.parm = parm
    def testAmberParmPandas(self):
        """ Tests creating a pandas DataFrame from an AmberParm """
        parm = load_file(get_fn('tip4p.parm7'))
        parm.load_rst7(get_fn('tip4p.rst7'))
        df = parm.to_dataframe()
        self.assertEqual(df.shape[0], len(parm.atoms))
        for i, r1 in df.iterrows():
            self.assertEqual(r1.charge, parm.atoms[i].charge)
            self.assertEqual(r1['name'], parm.atoms[i].name)
            self.assertEqual(r1.radii, parm.atoms[i].radii)
            self.assertEqual(r1.screen, parm.atoms[i].screen)
            self.assertEqual(r1.type, parm.atoms[i].type)
            self.assertEqual(r1.occupancy, parm.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, parm.atoms[i].bfactor)
            self.assertEqual(r1.altloc, parm.atoms[i].altloc)
            self.assertEqual(r1.rmin, parm.atoms[i].rmin)
            self.assertEqual(r1.epsilon, parm.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, parm.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, parm.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, parm.atoms[i].residue.name)
            self.assertEqual(r1.resid, parm.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, parm.atoms[i].residue.number)
            self.assertEqual(r1.chain, parm.atoms[i].residue.chain)
            self.assertEqual(r1.join, parm.atoms[i].join)
            self.assertEqual(r1.nb_idx, parm.atoms[i].nb_idx)
            self.assertEqual(r1.xx, parm.atoms[i].xx)
            self.assertEqual(r1.xy, parm.atoms[i].xy)
            self.assertEqual(r1.xz, parm.atoms[i].xz)
            self.assertEqual(r1.vx, parm.atoms[i].vx)
            self.assertEqual(r1.vy, parm.atoms[i].vy)
            self.assertEqual(r1.vz, parm.atoms[i].vz)

        self.assertNotIn('type_idx', df)
        self.assertNotIn('class_idx', df)
        for key in df.keys():
            self.assertFalse(key.startswith('multipole'))
        self.assertNotIn('polarizability', df)
        self.assertNotIn('vdw_parent', df)
        self.assertNotIn('segid', df)
    def testAmberParmPandas(self):
        """ Tests creating a pandas DataFrame from an AmberParm """
        parm = load_file(get_fn('tip4p.parm7'))
        parm.load_rst7(get_fn('tip4p.rst7'))
        df = parm.to_dataframe()
        self.assertEqual(df.shape[0], len(parm.atoms))
        for i, r1 in df.iterrows():
            self.assertEqual(r1.charge, parm.atoms[i].charge)
            self.assertEqual(r1['name'], parm.atoms[i].name)
            self.assertEqual(r1.radii, parm.atoms[i].radii)
            self.assertEqual(r1.screen, parm.atoms[i].screen)
            self.assertEqual(r1.type, parm.atoms[i].type)
            self.assertEqual(r1.occupancy, parm.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, parm.atoms[i].bfactor)
            self.assertEqual(r1.altloc, parm.atoms[i].altloc)
            self.assertEqual(r1.rmin, parm.atoms[i].rmin)
            self.assertEqual(r1.epsilon, parm.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, parm.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, parm.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, parm.atoms[i].residue.name)
            self.assertEqual(r1.resid, parm.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, parm.atoms[i].residue.number)
            self.assertEqual(r1.chain, parm.atoms[i].residue.chain)
            self.assertEqual(r1.join, parm.atoms[i].join)
            self.assertEqual(r1.nb_idx, parm.atoms[i].nb_idx)
            self.assertEqual(r1.xx, parm.atoms[i].xx)
            self.assertEqual(r1.xy, parm.atoms[i].xy)
            self.assertEqual(r1.xz, parm.atoms[i].xz)
            self.assertEqual(r1.vx, parm.atoms[i].vx)
            self.assertEqual(r1.vy, parm.atoms[i].vy)
            self.assertEqual(r1.vz, parm.atoms[i].vz)

        self.assertNotIn('type_idx', df)
        self.assertNotIn('class_idx', df)
        for key in df.keys():
            self.assertFalse(key.startswith('multipole'))
        self.assertNotIn('polarizability', df)
        self.assertNotIn('vdw_parent', df)
        self.assertNotIn('segid', df)
Exemple #19
0
 def add_parm(self, parm):
     """ Add a parm to the list """
     # Make sure this parm is not part of the list already
     if isinstance(parm, basestring):
         if parm in self._parm_names:
             raise DuplicateParm('%s already in ParmList' % parm)
         try:
             parm = load_file(parm)
         except FormatNotFound:
             raise ParmError('Could not determine file type of %s' % parm)
         if not isinstance(parm, Structure):
             raise ParmError('Added parm must be Structure or a subclass')
     elif not isinstance(parm, Structure):
         raise ParmError('Added parm must be Structure or a subclass')
         if str(parm) in self._parm_names:
             raise DuplicateParm('%s already in ParmList' % parm)
     # Otherwise, add in the new parm's name
     self._parm_names.append(str(parm))
     self._parm_instances.append(parm)
     # A newly added topology file is the currently active parm
     self.current_index = len(self._parm_instances) - 1
     self.parm = parm
    def testCharmmPSFPandas(self):
        """ Tests creating a pandas DataFrame from a CharmmPsfFile """
        parm = load_file(get_fn('ala_ala_ala.psf'))
        df = parm.to_dataframe()
        self.assertEqual(df.shape[0], len(parm.atoms))
        for i, r1 in df.iterrows():
            self.assertEqual(r1.charge, parm.atoms[i].charge)
            self.assertEqual(r1['name'], parm.atoms[i].name)
            self.assertEqual(r1.radii, parm.atoms[i].radii)
            self.assertEqual(r1.screen, parm.atoms[i].screen)
            self.assertEqual(r1.type, parm.atoms[i].type)
            self.assertEqual(r1.occupancy, parm.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, parm.atoms[i].bfactor)
            self.assertEqual(r1.altloc, parm.atoms[i].altloc)
            self.assertEqual(r1.rmin, parm.atoms[i].rmin)
            self.assertEqual(r1.epsilon, parm.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, parm.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, parm.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, parm.atoms[i].residue.name)
            self.assertEqual(r1.resid, parm.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, parm.atoms[i].residue.number)
            self.assertEqual(r1.chain, parm.atoms[i].residue.chain)
            self.assertEqual(r1.join, parm.atoms[i].join)
            self.assertEqual(r1.nb_idx, parm.atoms[i].nb_idx)
            self.assertEqual(r1.segid, parm.atoms[i].segid)

        self.assertNotIn('xx', df)
        self.assertNotIn('xy', df)
        self.assertNotIn('xz', df)
        self.assertNotIn('vx', df)
        self.assertNotIn('vy', df)
        self.assertNotIn('vz', df)
        self.assertNotIn('type_idx', df)
        self.assertNotIn('class_idx', df)
        for key in df.keys():
            self.assertFalse(key.startswith('multipole'))
        self.assertNotIn('polarizability', df)
        self.assertNotIn('vdw_parent', df)
    def testCharmmPSFPandas(self):
        """ Tests creating a pandas DataFrame from a CharmmPsfFile """
        parm = load_file(get_fn('ala_ala_ala.psf'))
        df = parm.to_dataframe()
        self.assertEqual(df.shape[0], len(parm.atoms))
        for i, r1 in df.iterrows():
            self.assertEqual(r1.charge, parm.atoms[i].charge)
            self.assertEqual(r1['name'], parm.atoms[i].name)
            self.assertEqual(r1.radii, parm.atoms[i].radii)
            self.assertEqual(r1.screen, parm.atoms[i].screen)
            self.assertEqual(r1.type, parm.atoms[i].type)
            self.assertEqual(r1.occupancy, parm.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, parm.atoms[i].bfactor)
            self.assertEqual(r1.altloc, parm.atoms[i].altloc)
            self.assertEqual(r1.rmin, parm.atoms[i].rmin)
            self.assertEqual(r1.epsilon, parm.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, parm.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, parm.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, parm.atoms[i].residue.name)
            self.assertEqual(r1.resid, parm.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, parm.atoms[i].residue.number)
            self.assertEqual(r1.chain, parm.atoms[i].residue.chain)
            self.assertEqual(r1.join, parm.atoms[i].join)
            self.assertEqual(r1.nb_idx, parm.atoms[i].nb_idx)
            self.assertEqual(r1.segid, parm.atoms[i].segid)

        self.assertNotIn('xx', df)
        self.assertNotIn('xy', df)
        self.assertNotIn('xz', df)
        self.assertNotIn('vx', df)
        self.assertNotIn('vy', df)
        self.assertNotIn('vz', df)
        self.assertNotIn('type_idx', df)
        self.assertNotIn('class_idx', df)
        for key in df.keys():
            self.assertFalse(key.startswith('multipole'))
        self.assertNotIn('polarizability', df)
        self.assertNotIn('vdw_parent', df)
    def testPDBPandas(self):
        """ Test 4lzt.pdb conversion to DataFrame (w/ anisou and positions) """
        pdb = load_file(get_fn('4lzt.pdb'))
        df = pdb.to_dataframe()
        self.assertIn('U11', df)
        self.assertIn('U22', df)
        self.assertIn('U33', df)
        self.assertIn('U12', df)
        self.assertIn('U13', df)
        self.assertIn('U23', df)
        # Make sure that when one of the anisotropic B-factors is not set, the
        # NaN gets properly put in its place
        pdb.atoms[0].anisou = None
        df2 = pdb.to_dataframe()
        self.assertIn('U11', df)
        self.assertIn('U22', df)
        self.assertIn('U33', df)
        self.assertIn('U12', df)
        self.assertIn('U13', df)
        self.assertIn('U23', df)
        # Now make sure they are all equal except for the first atom, and that
        # the data matches the PDB information
        anisou = ['U11', 'U22', 'U33', 'U12', 'U13', 'U23']
        for (i, r1), (j, r2) in zip(df.iterrows(), df2.iterrows()):
            if i == 0:
                # Easy NaN check
                self.assertNotEqual(r2.U11, r2.U11)
                self.assertNotEqual(r2.U22, r2.U22)
                self.assertNotEqual(r2.U33, r2.U33)
                self.assertNotEqual(r2.U12, r2.U12)
                self.assertNotEqual(r2.U13, r2.U13)
                self.assertNotEqual(r2.U23, r2.U23)
                # Check against df1
                self.assertNotEqual(r1.U11, r2.U11)
                self.assertNotEqual(r1.U22, r2.U22)
                self.assertNotEqual(r1.U33, r2.U33)
                self.assertNotEqual(r1.U12, r2.U12)
                self.assertNotEqual(r1.U13, r2.U13)
                self.assertNotEqual(r1.U23, r2.U23)
            else:
                self.assertEqual(r1.U11, r2.U11)
                self.assertEqual(r1.U22, r2.U22)
                self.assertEqual(r1.U33, r2.U33)
                self.assertEqual(r1.U12, r2.U12)
                self.assertEqual(r1.U13, r2.U13)
                self.assertEqual(r1.U23, r2.U23)
                self.assertTrue(np.all(np.abs(r1[anisou] - pdb.atoms[i].anisou) < 1e-4))
            self.assertEqual(r1.charge, 0)
            self.assertEqual(r1.charge, pdb.atoms[i].charge)
            self.assertEqual(r1['name'], pdb.atoms[i].name)
            self.assertEqual(r1.radii, pdb.atoms[i].radii)
            self.assertEqual(r1.screen, pdb.atoms[i].screen)
            self.assertEqual(r1.type, pdb.atoms[i].type)
            self.assertEqual(r1.occupancy, pdb.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, pdb.atoms[i].bfactor)
            self.assertEqual(r1.altloc, pdb.atoms[i].altloc)
            self.assertEqual(r1.rmin, pdb.atoms[i].rmin)
            self.assertEqual(r1.epsilon, pdb.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, pdb.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, pdb.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, pdb.atoms[i].residue.name)
            self.assertEqual(r1.resid, pdb.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, pdb.atoms[i].residue.number)
            self.assertEqual(r1.chain, pdb.atoms[i].residue.chain)
            self.assertEqual(r1.join, pdb.atoms[i].join)
            self.assertEqual(r1.nb_idx, pdb.atoms[i].nb_idx)
            self.assertEqual(r1.xx, pdb.atoms[i].xx)
            self.assertEqual(r1.xy, pdb.atoms[i].xy)
            self.assertEqual(r1.xz, pdb.atoms[i].xz)

        self.assertNotIn('vx', df)
        self.assertNotIn('vy', df)
        self.assertNotIn('vz', df)
        self.assertNotIn('type_idx', df)
        self.assertNotIn('class_idx', df)
        for key in df.keys():
            self.assertFalse(key.startswith('multipole'))
        self.assertNotIn('polarizability', df)
        self.assertNotIn('vdw_parent', df)
        self.assertNotIn('segid', df)
from __future__ import division, print_function

import sys

# OpenMM Imports
import simtk.openmm as mm
import simtk.openmm.app as app

# ParmEd Imports
from chemistry import load_file
from chemistry.openmm.reporters import NetCDFReporter
from chemistry import unit as u

# Load the Gromacs files
print('Loading Gromacs files...')
top = load_file('dhfr_gas.top')
gro = load_file('dhfr_gas.gro')

# Create the OpenMM system
print('Creating OpenMM System')
system = top.createSystem(nonbondedMethod=app.NoCutoff,
                          constraints=app.HBonds, implicitSolvent=app.GBn2,
                          implicitSolventSaltConc=0.1*u.moles/u.liter,
)

# Create the integrator to do Langevin dynamics
integrator = mm.LangevinIntegrator(
                        300*u.kelvin,       # Temperature of heat bath
                        1.0/u.picoseconds,  # Friction coefficient
                        2.0*u.femtoseconds, # Time step
)
from __future__ import division, print_function

import sys

# OpenMM Imports
import simtk.openmm as mm
import simtk.openmm.app as app

# ParmEd Imports
from chemistry import load_file
from chemistry.openmm.reporters import NetCDFReporter
from chemistry import unit as u

# Load the Gromacs files
print('Loading Gromacs files...')
top = load_file('dhfr_pme.top')
gro = load_file('dhfr_pme.gro')

# Transfer the unit cell information from the GRO file to the top object
top.box = gro.box[:]

# Create the OpenMM system
print('Creating OpenMM System')
system = top.createSystem(nonbondedMethod=app.PME,
                          nonbondedCutoff=8.0*u.angstroms,
                          constraints=app.HBonds,
)

# Create the integrator to do Langevin dynamics
integrator = mm.LangevinIntegrator(
                        300*u.kelvin,       # Temperature of heat bath
Exemple #25
0
import glob, os, chemistry
import networkx
import mdtraj as md

filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/*.prmtop")
#filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/57-55-6_1000_313.2*.prmtop")
filenames = glob.glob(
    "/home/kyleb/lb_benchmark_openmoltools/tleap/121182*.prmtop")
#filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/126492-54-4_1000_315*.prmtop")

for filename in filenames:
    base = os.path.splitext(os.path.split(filename)[-1])[0]
    prmtop_filename = "/home/kyleb/lb_benchmark_openmoltools/tleap/" + base + ".prmtop"
    inpcrd_filename = "/home/kyleb/lb_benchmark_openmoltools/tleap/" + base + ".inpcrd"
    print(prmtop_filename, inpcrd_filename)
    prmtop0 = chemistry.load_file(prmtop_filename)
    t0 = md.load(inpcrd_filename, top=prmtop_filename)
    t0 = t0.atom_slice(t0.top.select("resSeq 0"))
    prmtop_filename = "/home/kyleb/liquid_benchmark_3_14//tleap/" + base + ".prmtop"
    inpcrd_filename = "/home/kyleb/liquid_benchmark_3_14//tleap/" + base + ".inpcrd"
    prmtop1 = chemistry.load_file(prmtop_filename)
    t1 = md.load(inpcrd_filename, top=prmtop_filename)
    t1 = t1.atom_slice(t1.top.select("resSeq 0"))
    top0 = prmtop0.to_dataframe()
    top0 = top0[top0.resid == 0]
    top1 = prmtop1.to_dataframe()
    top1 = top1[top1.resid == 0]
    b0 = t0.top.to_dataframe()[1]
    b1 = t1.top.to_dataframe()[1]
    g0 = networkx.from_edgelist(b0)
    g1 = networkx.from_edgelist(b1)
    def testPDBPandas(self):
        """ Test 4lzt.pdb conversion to DataFrame (w/ anisou and positions) """
        pdb = load_file(get_fn('4lzt.pdb'))
        df = pdb.to_dataframe()
        self.assertIn('U11', df)
        self.assertIn('U22', df)
        self.assertIn('U33', df)
        self.assertIn('U12', df)
        self.assertIn('U13', df)
        self.assertIn('U23', df)
        # Make sure that when one of the anisotropic B-factors is not set, the
        # NaN gets properly put in its place
        pdb.atoms[0].anisou = None
        df2 = pdb.to_dataframe()
        self.assertIn('U11', df)
        self.assertIn('U22', df)
        self.assertIn('U33', df)
        self.assertIn('U12', df)
        self.assertIn('U13', df)
        self.assertIn('U23', df)
        # Now make sure they are all equal except for the first atom, and that
        # the data matches the PDB information
        anisou = ['U11', 'U22', 'U33', 'U12', 'U13', 'U23']
        for (i, r1), (j, r2) in zip(df.iterrows(), df2.iterrows()):
            if i == 0:
                # Easy NaN check
                self.assertNotEqual(r2.U11, r2.U11)
                self.assertNotEqual(r2.U22, r2.U22)
                self.assertNotEqual(r2.U33, r2.U33)
                self.assertNotEqual(r2.U12, r2.U12)
                self.assertNotEqual(r2.U13, r2.U13)
                self.assertNotEqual(r2.U23, r2.U23)
                # Check against df1
                self.assertNotEqual(r1.U11, r2.U11)
                self.assertNotEqual(r1.U22, r2.U22)
                self.assertNotEqual(r1.U33, r2.U33)
                self.assertNotEqual(r1.U12, r2.U12)
                self.assertNotEqual(r1.U13, r2.U13)
                self.assertNotEqual(r1.U23, r2.U23)
            else:
                self.assertEqual(r1.U11, r2.U11)
                self.assertEqual(r1.U22, r2.U22)
                self.assertEqual(r1.U33, r2.U33)
                self.assertEqual(r1.U12, r2.U12)
                self.assertEqual(r1.U13, r2.U13)
                self.assertEqual(r1.U23, r2.U23)
                self.assertTrue(
                    np.all(np.abs(r1[anisou] - pdb.atoms[i].anisou) < 1e-4))
            self.assertEqual(r1.charge, 0)
            self.assertEqual(r1.charge, pdb.atoms[i].charge)
            self.assertEqual(r1['name'], pdb.atoms[i].name)
            self.assertEqual(r1.radii, pdb.atoms[i].radii)
            self.assertEqual(r1.screen, pdb.atoms[i].screen)
            self.assertEqual(r1.type, pdb.atoms[i].type)
            self.assertEqual(r1.occupancy, pdb.atoms[i].occupancy)
            self.assertEqual(r1.bfactor, pdb.atoms[i].bfactor)
            self.assertEqual(r1.altloc, pdb.atoms[i].altloc)
            self.assertEqual(r1.rmin, pdb.atoms[i].rmin)
            self.assertEqual(r1.epsilon, pdb.atoms[i].epsilon)
            self.assertEqual(r1.rmin_14, pdb.atoms[i].rmin_14)
            self.assertEqual(r1.epsilon_14, pdb.atoms[i].epsilon_14)
            self.assertEqual(r1.resname, pdb.atoms[i].residue.name)
            self.assertEqual(r1.resid, pdb.atoms[i].residue.idx)
            self.assertEqual(r1.resnum, pdb.atoms[i].residue.number)
            self.assertEqual(r1.chain, pdb.atoms[i].residue.chain)
            self.assertEqual(r1.join, pdb.atoms[i].join)
            self.assertEqual(r1.nb_idx, pdb.atoms[i].nb_idx)
            self.assertEqual(r1.xx, pdb.atoms[i].xx)
            self.assertEqual(r1.xy, pdb.atoms[i].xy)
            self.assertEqual(r1.xz, pdb.atoms[i].xz)

        self.assertNotIn('vx', df)
        self.assertNotIn('vy', df)
        self.assertNotIn('vz', df)
        self.assertNotIn('type_idx', df)
        self.assertNotIn('class_idx', df)
        for key in df.keys():
            self.assertFalse(key.startswith('multipole'))
        self.assertNotIn('polarizability', df)
        self.assertNotIn('vdw_parent', df)
        self.assertNotIn('segid', df)
Exemple #27
0
"""
Tests the fancy indexing and slicing capabilities of Structure
"""

import chemistry as chem
import random
import unittest
import utils

parm = chem.load_file(utils.get_fn('trx.prmtop'))
pdb1 = chem.load_file(utils.get_fn('4lzt.pdb'))
pdb2 = chem.load_file(utils.get_fn('1kip.cif'))


class TestStructureSlicing(unittest.TestCase):
    """ Tests the fancy slicing/indexing of Structure """
    def testIntIndex(self):
        """ Tests simple Structure indexing (integer) """
        for i, atom in enumerate(parm.atoms):
            self.assertIs(atom, parm[i])
        for i, atom in enumerate(pdb1.atoms):
            self.assertIs(atom, pdb1[i])
        for i, atom in enumerate(pdb2.atoms):
            self.assertIs(atom, pdb2[i])

    def testSimpleSlice(self):
        """ Tests simple atom slicing """
        sl11 = parm[:10]
        sl21 = pdb1[:10]
        sl31 = pdb2[:10]
        sl12 = parm[10:20]
    cas, n_molecules, temperature = filename_munger(prmtop_filename)
    print(cas, temperature)
    dcd_filename = DATA_PATH + "/production/%s_%s_%s_production.dcd" % (cas, n_molecules, temperature)
    csv_filename = DATA_PATH + "/production/%s_%s_%s_production.csv" % (cas, n_molecules, temperature)
    try:
        traj = md.load(dcd_filename, top=prmtop_filename)
    except IOError:
        continue
    if traj.unitcell_lengths is None: continue
    rho = pd.read_csv(csv_filename)["Density (g/mL)"].values * 1000.  # g / mL -> kg /m3
    initial_traj_length = len(traj)
    initial_density_length = len(rho)
    [t0, g, Neff] = pymbar.timeseries.detectEquilibration(rho)
    mu = rho[t0:].mean()
    sigma = rho[t0:].std() * Neff ** -0.5
    prmtop = chemistry.load_file(prmtop_filename)
    charges = prmtop.to_dataframe().charge.values
    temperature = float(temperature)
    traj = traj[t0 * len(traj) / len(rho):]
    dielectric = md.geometry.static_dielectric(traj, charges, temperature)
    dielectric_sigma_fixedblock = dipole_errorbars.bootstrap_old(traj, charges, temperature, fixed_block_length)[1]
    block_length = dipole_errorbars.find_block_size(traj, charges, temperature)
    dielectric_sigma = dipole_errorbars.bootstrap(traj, charges, temperature, block_length, num_bootstrap)
    formula = cirpy.resolve(cas, "formula")
    data.append(dict(cas=cas, temperature=temperature, n_trimmed=t0, inefficiency=g, initial_traj_length=initial_traj_length, initial_density_length=initial_density_length, density=mu, density_sigma=sigma, Neff=Neff, n_frames=traj.n_frames, dielectric=dielectric, dielectric_sigma=dielectric_sigma, dielectric_sigma_fixedblock=dielectric_sigma_fixedblock, block_length=block_length, formula=formula))
    print(data[-1])

data = pd.DataFrame(data)

data.to_csv("./tables/predictions.csv")
"""
Tests the fancy indexing and slicing capabilities of Structure
"""
import chemistry as chem
from chemistry.utils.six.moves import range, zip
import random
import unittest
import utils

parm = chem.load_file(utils.get_fn('trx.prmtop'))
pdb1 = chem.load_file(utils.get_fn('4lzt.pdb'))
pdb2 = chem.load_file(utils.get_fn('1kip.cif'))

class TestStructureSlicing(unittest.TestCase):
    """ Tests the fancy slicing/indexing of Structure """

    def testIntIndex(self):
        """ Tests simple Structure indexing (integer) """
        for i, atom in enumerate(parm.atoms):
            self.assertIs(atom, parm[i])
        for i, atom in enumerate(pdb1.atoms):
            self.assertIs(atom, pdb1[i])
        for i, atom in enumerate(pdb2.atoms):
            self.assertIs(atom, pdb2[i])

    def testSimpleSlice(self):
        """ Tests simple atom slicing """
        sl11 = parm[:10]
        sl21 = pdb1[:10]
        sl31 = pdb2[:10]
        sl12 = parm[10:20]
Exemple #30
0
#!/usr/bin/env python

import openmoltools.utils
import chemistry

in_prmtop = 'toluene_cyclohexane_10_500.prmtop'
in_crd = 'toluene_cyclohexane_10_500.inpcrd'

#Convert AMBER to GROMACS via acpype
openmoltools.utils.convert_via_acpype( 'mixture', in_prmtop, in_crd, out_top = 'toluene_cyclohexane_10_500_acpype.top', out_gro = 'toluene_cyclohexane_10_500_acpype.gro' )

#Convert AMBER to GROMACS via ParmEd
structure = chemistry.amber.AmberParm( in_prmtop, in_crd )
#Gromacs topology
gromacs_topology = chemistry.gromacs.GromacsTopologyFile.from_structure( structure )
#Write
gromacs_topology.write( 'toluene_cyclohexane_10_500_parmed.top' ) 
chemistry.gromacs.GromacsGroFile.write( gromacs_topology, 'toluene_cyclohexane_10_500_parmed.gro')

#Create a second AMBER coordinate file so it will have the same precision as the gro file
gromacs_topology2 = chemistry.load_file( 'toluene_cyclohexane_10_500_parmed.top' )
gro = chemistry.gromacs.GromacsGroFile.parse( 'toluene_cyclohexane_10_500_parmed.gro' )
gromacs_topology2.box = gro.box
gromacs_topology2.positions = gro.positions
amberparm = chemistry.amber.AmberParm.from_structure( gromacs_topology2 ) 
amberparm.write_parm( 'toluene_cyclohexane_10_500_parmed.prmtop' )
amberparm.write_rst7( 'toluene_cyclohexane_10_500_parmed.crd' )
 def testReadAmber99SBILDN(self):
     """ Tests parsing a Gromacs topology with Amber99SBILDN and water """
     top = load_file(get_fn('1aki.ff99sbildn.top'))
     self._check_ff99sbildn(top)
import glob, os, chemistry
import networkx
import mdtraj as md

filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/*.prmtop")
#filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/57-55-6_1000_313.2*.prmtop")
filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/121182*.prmtop")
#filenames = glob.glob("/home/kyleb/lb_benchmark_openmoltools/tleap/126492-54-4_1000_315*.prmtop")

for filename in filenames:
    base = os.path.splitext(os.path.split(filename)[-1])[0]
    prmtop_filename = "/home/kyleb/lb_benchmark_openmoltools/tleap/" + base + ".prmtop"
    inpcrd_filename = "/home/kyleb/lb_benchmark_openmoltools/tleap/" + base + ".inpcrd"
    print(prmtop_filename, inpcrd_filename)
    prmtop0 = chemistry.load_file(prmtop_filename)
    t0 = md.load(inpcrd_filename, top=prmtop_filename)
    t0 = t0.atom_slice(t0.top.select("resSeq 0"))
    prmtop_filename = "/home/kyleb/liquid_benchmark_3_14//tleap/" + base + ".prmtop"
    inpcrd_filename = "/home/kyleb/liquid_benchmark_3_14//tleap/" + base + ".inpcrd"
    prmtop1 = chemistry.load_file(prmtop_filename)
    t1 = md.load(inpcrd_filename, top=prmtop_filename)
    t1 = t1.atom_slice(t1.top.select("resSeq 0"))
    top0 = prmtop0.to_dataframe()
    top0 = top0[top0.resid == 0]
    top1 = prmtop1.to_dataframe()
    top1 = top1[top1.resid == 0]
    b0 = t0.top.to_dataframe()[1]
    b1 = t1.top.to_dataframe()[1]
    g0 = networkx.from_edgelist(b0)
    g1 = networkx.from_edgelist(b1)
    for i in range(len(g0.nodes())):
Exemple #33
0
for k0, k1, components, smiles, cas, temperature, pressure, density, perm in data.itertuples(
):
    print(k0, k1, components, smiles, cas, temperature, pressure, density)
    mol2_filename = "./tmpmol2/%s.mol2" % cas
    frcmod_filename = "./tmpmol2/%s.frcmod" % cas
    openmoltools.openeye.smiles_to_antechamber(smiles, mol2_filename,
                                               frcmod_filename)

PATH0 = "/home/kyleb/liquid_benchmark_4_8/"
PATH1 = "/home/kyleb/liquid_benchmark_3_14/"
PATH2 = "./tmpmol2/"

for k0, k1, components, smiles, cas, temperature, pressure, density, perm in data.itertuples(
):
    print(k0, k1, components, smiles, cas, temperature, pressure, density)

    mol2_filename = PATH0 + "/monomers/%s.mol2" % cas
    prmtop0 = chemistry.load_file(mol2_filename)
    charges0 = np.array([a.charge for a in prmtop0.atoms])

    mol2_filename = PATH1 + "/monomers/%s.mol2" % cas
    prmtop1 = chemistry.load_file(mol2_filename)
    charges1 = np.array([a.charge for a in prmtop1.atoms])

    mol2_filename = PATH2 + "/%s.mol2" % cas
    prmtop2 = chemistry.load_file(mol2_filename)
    charges2 = np.array([a.charge for a in prmtop2.atoms])
    print(cas)
    print(np.std((charges0.min(), charges1.min(), charges2.min())))
    print(charges0.min(), charges1.min(), charges2.min())