Пример #1
0
 def process_flex_res_lines(self, lines):
     # processremove BEGIN_RES, REMARK lines
     # change ROOT/ENDROOT to BRANCH/ENDBRANCH LigROOTATOM# first resAtom#
     #print "in pfrl: len(lines)=", len(lines)
     parser = PdbqtParser()
     pl = []
     flex_res = ResidueSet()
     for i in range(len(lines)):
         l = lines[i]
         #print l
         if l.find('BEGIN_RES')>-1: 
             #print "found BEGIN_RES", len(pl)
             pl = [l]
         elif l.find('END_RES')>-1: 
             #print "found END_RES", len(pl)
             if len(pl):
                 #pl.append(l)
                 parser.allLines = pl[1:-1]
                 mol = parser.parse()[0]
                 mol.chains.residues[-1].torTree = mol.torTree
                 #for res in mol.chains.residues:
                 flex_res += mol.chains.residues
                 #flex_res.extend(mol.chains.residues)
                 #print '2:', len(flex_res)
                 if i!=len(lines)-1:
                     pl = []
         else:
             pl.append(l)
     #print "returning ", flex_res
     return flex_res
Пример #2
0
def test_parsePDBQT():
    """
    check that pdbqt format files can be read
    """
    from MolKit.pdbParser import PdbqtParser
    parser = PdbqtParser("Data/1ent_rec.pdbqt")
    m = parser.parse()[0]
    assert len(m.allAtoms)==2901
Пример #3
0
def test_parsePDBQT():
    """
    check that pdbqt format files can be read
    """
    from MolKit.pdbParser import PdbqtParser
    parser = PdbqtParser("Data/1ent_rec.pdbqt")
    m = parser.parse()[0]
    assert len(m.allAtoms) == 2901
Пример #4
0
 def _buildInputLig(self, lines, filename):
     if self.parser.version>=4.0:
         parser = PdbqtParser()
         #pdbqParser.allLines = self._hackLigLineFormat(lines)
     else:
         parser = PdbqParser()
     if hasattr(self.parser, 'hasFlexRes') and self.parser.hasFlexRes:
         lines.extend(self.parser.flex_res_lines)
         self.flex_res = self.process_flex_res_lines(self.parser.flex_res_lines)
         #print "flex_res=", self.flex_res
     parser.allLines = lines
     parser.filename = filename
     #filename = pdbqParser.filename = self.dpo['move']['value']
     #the parser does this
     #nameStr = os.path.splitext(filename)[0]
     try:
         mol = parser.parse()[0]
         return mol
     except:
         print "exception in _buildInputLig"
Пример #5
0
def Read(filename=None, alllines=None, dataformat='pdb', modelsAs='molecules'):
    if not alllines and not filename:
        raise AssertionError("%s invalid molecule" % filename)
    elif alllines and filename:
        alllines = None
    elif filename:
        if not os.path.exists(filename):
            raise AssertionError("%s does't exist" % filename)

    if alllines:
        ext = dataformat
        args = [None, alllines]
    else:
        ext = filename.split('.')[1]
        args = [filename, None]
    if ext == 'pdb':
        parser = PdbParser(*args, modelsAs=modelsAs)

    elif ext == 'pdbq':
        parser = PdbqParser(*args, modelsAs=modelsAs)

    elif ext == 'pdbqt':
        parser = PdbqtParser(*args, modelsAs=modelsAs)

    elif ext == 'pdbqs':
        parser = PdbqsParser(*args, modelsAs=modelsAs)

    elif ext == 'pqr':
        parser = PQRParser(*args, modelsAs=modelsAs)

    # FIXME: pass all lines???
    elif ext == 'mol2':
        parser = Mol2Parser(
            filename)  # ??should modelsAs be available for mol2 format??

    elif ext == 'cif':
        parser = MMCIFParser(filename)

    elif ext == 'f2d':
        parser = F2DParser(filename)

    else:
        print("File Format unknown can't parse it")
        return []
    molecules = parser.parse()
    return molecules
Пример #6
0
def Read(filename, modelsAs='molecules'):
    if not os.path.exists(filename):
        raise AssertionError, "%s does't exist" % filename
    from MolKit.pdbParser import PdbParser, PdbqParser,PdbqsParser,\
            PdbqtParser, PQRParser, F2DParser

    from MolKit.mol2Parser import Mol2Parser
    from MolKit.mmcifParser import MMCIFParser
    ext = string.split(filename, '.')
    if ext[-1] == 'pdb':
        parser = PdbParser(filename, modelsAs=modelsAs)

    elif ext[-1] == 'pdbq':
        parser = PdbqParser(filename, modelsAs=modelsAs)

    elif ext[-1] == 'pdbqt':
        parser = PdbqtParser(filename, modelsAs=modelsAs)

    elif ext[-1] == 'pdbqs':
        parser = PdbqsParser(filename, modelsAs=modelsAs)

    elif ext[-1] == 'pqr':
        parser = PQRParser(filename, modelsAs=modelsAs)

    elif ext[-1] == 'mol2':
        parser = Mol2Parser(
            filename)  #??should modelsAs be available for mol2 format??

    elif ext[-1] == 'cif':
        parser = MMCIFParser(filename, modelsAs=modelsAs)

    elif ext[-1] == 'f2d':
        parser = F2DParser(filename)

    else:
        print "File Format unknown can't parse it"
        return []
    molecules = parser.parse()
    return molecules