Modernize print statements with str.format()

This commit is contained in:
Nathan Baker
2020-05-28 20:31:03 -07:00
parent ba67f5149d
commit 87347a7d60
5 changed files with 70 additions and 59 deletions

View File

@@ -113,7 +113,7 @@ class Protonate:
i = 1
for bonded in heavy_atom.bonded_atoms:
if bonded.element == 'H':
bonded.name += '%d' % i
bonded.name += str(i)
i += 1
def set_number_of_protons_to_add(self, atom):
@@ -125,15 +125,16 @@ class Protonate:
debug('*'*10)
debug('Setting number of protons to add for', atom)
atom.number_of_protons_to_add = 8
debug(' %4d' % 8)
debug(" 8")
atom.number_of_protons_to_add -= self.valence_electrons[atom.element]
debug('Valence eletrons: %4d' % -self.valence_electrons[atom.element])
debug('Valence electrons: {0:>4d}'.format(
-self.valence_electrons[atom.element]))
atom.number_of_protons_to_add -= len(atom.bonded_atoms)
debug('Number of bonds: %4d' % -len(atom.bonded_atoms))
debug('Number of bonds: {0:>4d}'.format(-len(atom.bonded_atoms)))
atom.number_of_protons_to_add -= atom.num_pi_elec_2_3_bonds
debug('Pi electrons: %4d' % -atom.num_pi_elec_2_3_bonds)
debug('Pi electrons: {0:>4d}'.format(-atom.num_pi_elec_2_3_bonds))
atom.number_of_protons_to_add += int(atom.charge)
debug('Charge: %4.1f' % atom.charge)
debug('Charge: {0:>4.1f}'.format(atom.charge))
debug('-'*10)
debug(atom.number_of_protons_to_add)
@@ -149,35 +150,37 @@ class Protonate:
debug('='*10)
debug('Setting steric number and lone pairs for', atom)
atom.steric_number = 0
debug('%65s: %4d' % ('Valence electrons',
self.valence_electrons[atom.element]))
debug('{0:>65s}: {1:>4d}'.format(
'Valence electrons', self.valence_electrons[atom.element]))
atom.steric_number += self.valence_electrons[atom.element]
debug('%65s: %4d' % ('Number of bonds',
len(atom.bonded_atoms)))
debug('{0:>65s}: {1:>4d}'.format(
'Number of bonds', len(atom.bonded_atoms)))
atom.steric_number += len(atom.bonded_atoms)
debug('%65s: %4d' % ('Number of hydrogen atoms to add',
atom.number_of_protons_to_add))
debug('{0:>65s}: {1:>4d}'.format(
'Number of hydrogen atoms to add', atom.number_of_protons_to_add))
atom.steric_number += atom.number_of_protons_to_add
debug('%65s: %4d' % ('Number of pi-electrons in double '
'and triple bonds(-)',
atom.num_pi_elec_2_3_bonds))
debug('{0:>65s}: {1:>4d}'.format(
'Number of pi-electrons in double and triple bonds(-)',
atom.num_pi_elec_2_3_bonds))
atom.steric_number -= atom.num_pi_elec_2_3_bonds
debug('%65s: %4d' % ('Number of pi-electrons in conjugated double and '
'triple bonds(-)',
atom.num_pi_elec_conj_2_3_bonds))
debug('{0:>65s}: {1:>4d}'.format(
'Number of pi-electrons in conjugated double and triple bonds(-)',
atom.num_pi_elec_conj_2_3_bonds))
atom.steric_number -= atom.num_pi_elec_conj_2_3_bonds
debug('%65s: %4d' % ('Number of donated co-ordinated bonds', 0))
debug('{0:>65s}: {1:>4d}'.format(
'Number of donated co-ordinated bonds', 0))
atom.steric_number += 0
debug('%65s: %4.1f' % ('Charge(-)', atom.charge))
debug('{0:>65s}: {1:>4.1f}'.format(
'Charge(-)', atom.charge))
atom.steric_number -= atom.charge
atom.steric_number = math.floor(atom.steric_number/2.0)
atom.number_of_lone_pairs = (atom.steric_number
- len(atom.bonded_atoms)
- atom.number_of_protons_to_add)
atom.number_of_lone_pairs = (
atom.steric_number-len(atom.bonded_atoms)-atom.number_of_protons_to_add)
debug('-'*70)
debug('%65s: %4d' % ('Steric number', atom.steric_number))
debug('%65s: %4d' % ('Number of lone pairs',
atom.number_of_lone_pairs))
debug('{0:>65s}: {1:>4d}'.format(
'Steric number', atom.steric_number))
debug('{0:>65s}: {1:>4d}'.format(
'Number of lone pairs', atom.number_of_lone_pairs))
atom.steric_num_lone_pairs_set = True
def add_protons(self, atom):
@@ -191,8 +194,8 @@ class Protonate:
if atom.steric_number in list(self.protonation_methods.keys()):
self.protonation_methods[atom.steric_number](atom)
else:
warning('Do not have a method for protonating',
atom, '(steric number: %d)' % atom.steric_number)
warning('Do not have a method for protonating', atom,
'(steric number: {0:d})'.format(atom.steric_number))
def trigonal(self, atom):
"""Add hydrogens in trigonal geometry.
@@ -200,7 +203,7 @@ class Protonate:
Args:
atom: atom to protonate
"""
debug('TRIGONAL - %d bonded atoms' % len(atom.bonded_atoms))
debug('TRIGONAL - {0:d} bonded atoms'.format(len(atom.bonded_atoms)))
rot_angle = math.radians(120.0)
cvec = Vector(atom1=atom)
# 0 bonds
@@ -258,7 +261,8 @@ class Protonate:
Args:
atom: atom to protonate.
"""
debug('TETRAHEDRAL - %d bonded atoms' % len(atom.bonded_atoms))
debug(
'TETRAHEDRAL - {0:d} bonded atoms'.format(len(atom.bonded_atoms)))
# TODO - might be good to move tetrahedral angle to constant
rot_angle = math.radians(109.5)
cvec = Vector(atom1=atom)
@@ -304,7 +308,7 @@ class Protonate:
new_h = propka.atom.Atom()
new_h.set_property(
numb=None,
name='H%s' % atom.name[1:],
name='H{0:s}'.format(atom.name[1:]),
res_name=atom.res_name,
chain_id=atom.chain_id,
res_num=atom.res_num,
@@ -327,14 +331,15 @@ class Protonate:
atom.number_of_protons_to_add -= 1
atom.conformation_container.add_atom(new_h)
# update names of all protons on this atom
new_h.residue_label = "%-3s%4d%2s" % (new_h.name, new_h.res_num,
new_h.chain_id)
new_h.residue_label = "{0:<3s}{1:>4d}{2:>2s}".format(
new_h.name, new_h.res_num, new_h.chain_id)
no_protons = atom.count_bonded_elements('H')
if no_protons > 1:
i = 1
for proton in atom.get_bonded_elements('H'):
proton.name = 'H%s%d' % (atom.name[1:], i)
proton.residue_label = "%-3s%4d%2s" % (
proton.name = 'H{0:s}{1:d}'.format(
atom.name[1:], i)
proton.residue_label = "{0:<3s}{1:>4d}{2:>2s}".format(
proton.name, proton.res_num, proton.chain_id)
i += 1
debug('added', new_h, 'to', atom)
@@ -352,8 +357,9 @@ class Protonate:
if element in list(self.bond_lengths.keys()):
dist = self.bond_lengths[element]
else:
str_ = ('Bond length for %s not found, using the standard value '
'of %f' % (element, dist))
str_ = (
'Bond length for {0:s} not found, using the standard value '
'of {1:f}'.format(element, dist))
warning(str_)
bvec = bvec.rescale(dist)
return bvec

View File

@@ -34,7 +34,7 @@ def single(pdbfile, optargs=None):
options = loadOptions(*optargs)
pdbfile = options.filenames.pop(0)
if len(options.filenames) > 0:
_LOGGER.warning("Ignoring filenames: %s", options.filenames)
_LOGGER.warning("Ignoring filenames: {0:s}".format(options.filenames))
my_molecule = Molecular_container(pdbfile, options)
my_molecule.calculate_pka()
my_molecule.write_pka()

View File

@@ -58,7 +58,7 @@ class Vector:
elif type(other) in [int, float]:
return Vector(self.x * other, self.y * other, self.z * other)
else:
info('%s not supported' % type(other))
info('{0:s} not supported'.format(type(other)))
raise TypeError
def __rmul__(self, other):
@@ -85,7 +85,8 @@ class Vector:
return math.sqrt(self.sq_length())
def __str__(self):
return '%10.4f %10.4f %10.4f'%(self.x, self.y, self.z)
return '{0:>10.4f} {1:>10.4f} {2:>10.4f}'.format(
self.x, self.y, self.z)
def __repr__(self):
return '<vector>'
@@ -100,9 +101,7 @@ class Vector:
def rescale(self, new_length):
""" Rescale vector to new length while preserving direction """
frac = new_length/(self.length())
res = Vector(xi=self.x*frac,
yi=self.y*frac,
zi=self.z*frac)
res = Vector(xi=self.x*frac, yi=self.y*frac, zi=self.z*frac)
return res
@@ -296,7 +295,8 @@ class MultiVector:
keys2 = get_sorted_configurations(atom2.configurations.keys())
if self.keys != keys2:
str_ = ('Cannot make multi vector: Atomic configurations '
'mismatch for\n %s\n %s\n' % (atom1, atom2))
'mismatch for\n {0:s}\n {1:s}\n'.format(
atom1, atom2))
raise KeyError(str_)
for key in self.keys:
atom1.setConfiguration(key)
@@ -314,7 +314,7 @@ class MultiVector:
def __str__(self):
res = ''
for i, key in enumerate(self.keys):
res += '%s %s\n' % (key, self.vectors[i])
res += '{0:s} {1:s}\n'.format(key, self.vectors[i])
return res
def do_job(self, job):
@@ -350,8 +350,9 @@ class MultiVector:
for i in range(len(self.vectors)):
self.result.vectors.append(
# TODO - eliminate eval() or entire class
eval('self.vectors[%d] %s other.vectors[%d]'
% (i, operation, i)))
eval(
'self.vectors[{0:d}] {1:s} other.vectors[{2:d}]'.format(
i, operation, i)))
self.result.keys.append(self.keys[i])
def __add__(self, other):

View File

@@ -31,7 +31,7 @@ class Version:
Raises:
NotImplementedError
"""
err = "Called an empty Version function with args %s" % args
err = "Called an empty Version function with args {0:s}".format(args)
raise NotImplementedError(err)
def calculate_desolvation(self, group):

View File

@@ -48,8 +48,9 @@ def get_test_dirs():
if test_path.is_dir():
path_dict[key] = test_path
else:
errstr = ("Can't find %s test files in %s"
% (key, [TEST_DIR / path, path]))
errstr = (
"Can't find {0:s} test files in {1:s}".format(
key, [TEST_DIR / path, path]))
raise FileNotFoundError(errstr)
return path_dict
@@ -65,8 +66,9 @@ def run_propka(options, pdb_path, tmp_path):
options += [str(pdb_path)]
args = propka.lib.loadOptions(options)
try:
_LOGGER.warning("Working in tmpdir %s because of PROPKA file output; "
"need to fix this.", tmp_path)
_LOGGER.warning(
"Working in tmpdir {0:s} because of PROPKA file output; "
"need to fix this.".format(str(tmp_path)))
cwd = Path.cwd()
os.chdir(tmp_path)
molecule = propka.molecular_container.Molecular_container(
@@ -93,7 +95,7 @@ def compare_output(pdb, tmp_path, ref_path):
ref_data.append(float(line))
test_data = []
pka_path = Path(tmp_path) / ("%s.pka" % pdb)
pka_path = Path(tmp_path) / ("{0:s}.pka".format(pdb))
with open(pka_path, "rt") as pka_file:
at_pka = False
for line in pka_file:
@@ -106,8 +108,9 @@ def compare_output(pdb, tmp_path, ref_path):
match = re.search(r'([0-9]+\.[0-9]+)', line)
value = float(match.group(0))
test_data.append(value)
errstr = ("Error exceeds maximum allowed value (%d decimal places)"
% MAX_ERR_DECIMALS)
errstr = (
"Error exceeds maximum allowed value ({0:d} decimal places)".format(
MAX_ERR_DECIMALS))
assert_almost_equal(
test_data, ref_data, decimal=MAX_ERR_DECIMALS, err_msg=errstr,
verbose=True)
@@ -126,17 +129,18 @@ def compare_output(pdb, tmp_path, ref_path):
def test_regression(pdb, options, tmp_path):
"""Basic regression test of PROPKA functionality."""
path_dict = get_test_dirs()
ref_path = path_dict["results"] / ("%s.dat" % pdb)
ref_path = path_dict["results"] / ("{0:s}.dat".format(pdb))
if ref_path.is_file():
ref_path = ref_path.resolve()
else:
_LOGGER.warning("Missing results file for comparison: %s", ref_path)
_LOGGER.warning("Missing results file for comparison: {0:s}".format(
str(ref_path)))
ref_path = None
pdb_path = path_dict["pdbs"] / ("%s.pdb" % pdb)
pdb_path = path_dict["pdbs"] / ("{0:s}.pdb".format(pdb))
if pdb_path.is_file():
pdb_path = pdb_path.resolve()
else:
errstr = "Missing PDB file: %s" % pdb_path
errstr = "Missing PDB file: {0:s}".format(pdb_path)
raise FileNotFoundError(errstr)
tmp_path = Path(tmp_path).resolve()