def test_write(self):
     """
     test writing a pdbq file
     """
     writer = PdbqWriter()
     writer.write('test_pdbqWriter.pdbq', self.mol, bondOrigin=('File',))
     ans, errors = self.compare('Data/1crn_Hs.pdbq',
                                'test_pdbqWriter.pdbq') 
     self.assertEquals(errors, None)
     self.assertEquals(ans, True)
Beispiel #2
0
 def setup(self,
           useProteinAromaticList=1,
           aromaticCutOff=7.5,
           maxtors=32,
           autoMergeNPHS=1):
     if self.chains[0].hasBonds == 0:
         self.buildBondsByDistance()
     self.useProteinAromaticList = useProteinAromaticList
     self.aromaticCutOff = aromaticCutOff
     self.maxtors = 32
     self.autoMergeNPHS = autoMergeNPHS
     self.bondClassifier = AutoDockBondClassifier()
     self.torsionTree = None
     self.message = ""
     self.torscount = 0
     self.possible_torscount = 0
     self.TORSDOF = 0
     self.resKeys = list(q.keys())
     self.PdbqWriter = PdbqWriter()
     #should this be here?
     msg = 'initialized ' + self.name + ':\n'
     #detect whether isPeptide
     msg += self.checkIsPeptide()
     #process charges
     msg += self.checkCharges()
     ##process hydrogens
     msg += self.checkHydrogens()
     #process bonds
     #this doesn't report anything???
     newmsg, nphs = self.checkBonds()
     msg += newmsg
     #process aromaticCarbons
     msg += self.checkAromatics()
     return msg, nphs
Beispiel #3
0
            sys.exit()

    if not filename:
        print('rotate_molecule: filename must be specified.')
        usage()
        sys.exit()

    mol = Read(filename)[0]
    if verbose: print('read ', filename)
    filetype = os.path.splitext(os.path.basename(filename))[1]
    if verbose: print("filetype=", filetype)
    writer = None
    if filetype == '.pdbqt':
        writer = PdbqtWriter()
    elif filetype == '.pdbq':
        writer = PdbqWriter()
    elif filetype == '.pdbqs':
        writer = PdbqsWriter()
    elif filetype == '.pdb':
        writer = PdbWriter()
    else:
        print('Sorry! Unable to write this filetype->', filetype)

    center = numpy.add.reduce(mol.allAtoms.coords) / len(mol.allAtoms)
    crds = numpy.array(mol.allAtoms.coords)
    center = numpy.add.reduce(crds) / len(mol.allAtoms)
    crds = crds - center
    crds = crds.tolist()
    mol.allAtoms.updateCoords(crds)
    lenCoords = len(crds)
    #rotate the atoms here

    if not pdbqt_filename:
        print 'pdbqt_to_pdbq: pdbqt_filename must be specified.'
        usage()
        sys.exit()

    mols = Read(pdbqt_filename)
    if verbose: print 'read ', pdbqt_filename
    mol = mols[0]
    mol.buildBondsByDistance()
    #fix number for problem files with alternative positions
    mol.allAtoms.number = range(1, len(mol.allAtoms)+1)

    #pdb_filename = mol.name + '.pdb'
    writer = PdbqWriter()
    #writer.write(pdbq_filename, mol.allAtoms, records=['ATOM', 'HETATM'])
    fptr = open(pdbq_filename, 'w')
    ctr = 0
    for l in mol.parser.allLines:
        if l.find('ATOM')==0 or l.find('HETATM')==0:
            at = mol.allAtoms[ctr]
            if at.autodock_element=='A':
                if len(at.name)==1:
                    at.name='A'
                else:
                    at.name = 'A' + at.name[1:]
            writer.write_atom(fptr, mol.allAtoms[ctr])
            ctr = ctr + 1
        else:
            fptr.write(l)
            sys.exit()

    if not pdbqt_filename:
        print('pdbqt_to_pdbq: pdbqt_filename must be specified.')
        usage()
        sys.exit()

    mols = Read(pdbqt_filename)
    if verbose: print('read ', pdbqt_filename)
    mol = mols[0]
    mol.buildBondsByDistance()
    #fix number for problem files with alternative positions
    mol.allAtoms.number = list(range(1, len(mol.allAtoms) + 1))

    #pdb_filename = mol.name + '.pdb'
    writer = PdbqWriter()
    #writer.write(pdbq_filename, mol.allAtoms, records=['ATOM', 'HETATM'])
    fptr = open(pdbq_filename, 'w')
    ctr = 0
    for l in mol.parser.allLines:
        if l.find('ATOM') == 0 or l.find('HETATM') == 0:
            at = mol.allAtoms[ctr]
            if at.autodock_element == 'A':
                if len(at.name) == 1:
                    at.name = 'A'
                else:
                    at.name = 'A' + at.name[1:]
            writer.write_atom(fptr, mol.allAtoms[ctr])
            ctr = ctr + 1
        else:
            fptr.write(l)