diff --git a/propka/ligand_pka_values.py b/propka/ligand_pka_values.py index 7831cb2..ae38c3f 100644 --- a/propka/ligand_pka_values.py +++ b/propka/ligand_pka_values.py @@ -37,8 +37,10 @@ class LigandPkaValues: location of program """ path = os.environ.get('PATH').split(os.pathsep) - locs = [i for i in filter(lambda loc: os.access(loc, os.F_OK), \ - map(lambda dir: os.path.join(dir, program), path))] + locs = [ + i for i in filter(lambda loc: os.access(loc, os.F_OK), + map(lambda dir: os.path.join(dir, program), + path))] if len(locs) == 0: str_ = "'Error: Could not find %s." % program str_ += ' Please make sure that it is found in the path.' @@ -46,7 +48,8 @@ class LigandPkaValues: sys.exit(-1) return locs[0] - def get_marvin_pkas_for_pdb_file(self, pdbfile, num_pkas=10, min_ph=-10, max_ph=20): + def get_marvin_pkas_for_pdb_file(self, pdbfile, num_pkas=10, min_ph=-10, + max_ph=20): """Use Marvin executables to get pKas for a PDB file. Args: @@ -56,12 +59,11 @@ class LigandPkaValues: max_ph: maximum pH value """ molecule = propka.molecular_container.Molecular_container(pdbfile) - self.get_marvin_pkas_for_molecular_container(molecule, - num_pkas=num_pkas, - min_ph=min_ph, - max_ph=max_ph) + self.get_marvin_pkas_for_molecular_container( + molecule, num_pkas=num_pkas, min_ph=min_ph, max_ph=max_ph) - def get_marvin_pkas_for_molecular_container(self, molecule, num_pkas=10, min_ph=-10, max_ph=20): + def get_marvin_pkas_for_molecular_container(self, molecule, num_pkas=10, + min_ph=-10, max_ph=20): """Use Marvin executables to calculate pKas for a molecular container. Args: @@ -72,13 +74,10 @@ class LigandPkaValues: """ for name in molecule.conformation_names: filename = '%s_%s' % (molecule.name, name) - self.get_marvin_pkas_for_conformation_container(molecule.conformations[name], - name=filename, - reuse=molecule.\ - options.reuse_ligand_mol2_file, - num_pkas=num_pkas, - min_ph=min_ph, - max_ph=max_ph) + self.get_marvin_pkas_for_conformation_container( + molecule.conformations[name], name=filename, + reuse=molecule.options.reuse_ligand_mol2_file, + num_pkas=num_pkas, min_ph=min_ph, max_ph=max_ph) def get_marvin_pkas_for_conformation_container(self, conformation, name='temp', reuse=False, @@ -95,10 +94,9 @@ class LigandPkaValues: max_ph: maximum pH value """ conformation.marvin_pkas_calculated = True - self.get_marvin_pkas_for_atoms(conformation.get_heavy_ligand_atoms(), - name=name, reuse=reuse, - num_pkas=num_pkas, min_ph=min_ph, - max_ph=max_ph) + self.get_marvin_pkas_for_atoms( + conformation.get_heavy_ligand_atoms(), name=name, reuse=reuse, + num_pkas=num_pkas, min_ph=min_ph, max_ph=max_ph) def get_marvin_pkas_for_atoms(self, atoms, name='temp', reuse=False, num_pkas=10, min_ph=-10, max_ph=20): @@ -116,9 +114,9 @@ class LigandPkaValues: molecules = propka.lib.split_atoms_into_molecules(atoms) for i, molecule in enumerate(molecules): filename = '%s_%d.mol2'%(name, i+1) - self.get_marvin_pkas_for_molecule(molecule, filename=filename, - reuse=reuse, num_pkas=num_pkas, - min_ph=min_ph, max_ph=max_ph) + self.get_marvin_pkas_for_molecule( + molecule, filename=filename, reuse=reuse, num_pkas=num_pkas, + min_ph=min_ph, max_ph=max_ph) def get_marvin_pkas_for_molecule(self, atoms, filename='__tmp_ligand.mol2', reuse=False, num_pkas=10, min_ph=-10, @@ -138,25 +136,28 @@ class LigandPkaValues: propka.pdb.write_mol2_for_atoms(atoms, filename) # check that we actually have a file to work with if not os.path.isfile(filename): - errstr = "Didn't find a user-modified file '%s' - generating one" \ - % filename + errstr = ("Didn't find a user-modified file '%s' - generating one" + % filename) warning(errstr) propka.pdb.write_mol2_for_atoms(atoms, filename) # Marvin calculate pKa values - options = 'pka -a %d -b %d --min %f --max %f -d large' % (num_pkas, - num_pkas, - min_ph, - max_ph) - (output, errors) = subprocess.Popen([self.cxcalc, filename]+options.split(), - stdout=subprocess.PIPE, - stderr=subprocess.PIPE).communicate() + options = ('pka -a %d -b %d --min %f --max %f -d large' + % (num_pkas, num_pkas, min_ph, max_ph)) + (output, errors) = subprocess.Popen( + [self.cxcalc, filename]+options.split(), stdout=subprocess.PIPE, + stderr=subprocess.PIPE).communicate() if len(errors) > 0: - info('********************************************************************************************************') - info('* Warning: Marvin execution failed: *') + info('***********************************************************' + '*********************************************') + info('* Warning: Marvin execution failed: ' + ' *') info('* %-100s *' % errors) - info('* *') - info('* Please edit the ligand mol2 file and re-run PropKa with the -l option: %29s *' % filename) - info('********************************************************************************************************') + info('* ' + ' *') + info('* Please edit the ligand mol2 file and re-run PropKa with ' + 'the -l option: %29s *' % filename) + info('***********************************************************' + '*********************************************') sys.exit(-1) # extract calculated pkas indices, pkas, types = self.extract_pkas(output) @@ -182,8 +183,9 @@ class LigandPkaValues: tags = tags.split('\t') values = values.split('\t') # format values - types = [tags[i][0] for i in range(1, len(tags)-1) if len(values) > i \ - and values[i] != ''] + types = [ + tags[i][0] for i in range(1, len(tags)-1) + if len(values) > i and values[i] != ''] indices = [int(a)-1 for a in values[-1].split(',') if a != ''] values = [float(v.replace(',', '.')) for v in values[1:-1] if v != ''] if len(indices) != len(values) != len(types):