Update string formatting to modern version.
Focuses only on complex formatting.
This commit is contained in:
@@ -242,8 +242,8 @@ def add_trp_hydrogen(residue):
|
|||||||
elif atom.name == "CE2":
|
elif atom.name == "CE2":
|
||||||
ce_atom = atom
|
ce_atom = atom
|
||||||
if (cd_atom is None) or (ne_atom is None) or (ce_atom is None):
|
if (cd_atom is None) or (ne_atom is None) or (ce_atom is None):
|
||||||
errstr = "Unable to find all atoms for %s %s" % (residue[0].res_name,
|
errstr = "Unable to find all atoms for %s %s" % (
|
||||||
residue[0].res_num)
|
residue[0].res_name, residue[0].res_num)
|
||||||
raise ValueError(errstr)
|
raise ValueError(errstr)
|
||||||
he_atom = protonate_sp2(cd_atom, ne_atom, ce_atom)
|
he_atom = protonate_sp2(cd_atom, ne_atom, ce_atom)
|
||||||
he_atom.name = "HNE"
|
he_atom.name = "HNE"
|
||||||
@@ -269,8 +269,8 @@ def add_amd_hydrogen(residue):
|
|||||||
or (atom.res_name == "ASN" and atom.name == "ND2")):
|
or (atom.res_name == "ASN" and atom.name == "ND2")):
|
||||||
n_atom = atom
|
n_atom = atom
|
||||||
if (c_atom is None) or (o_atom is None) or (n_atom is None):
|
if (c_atom is None) or (o_atom is None) or (n_atom is None):
|
||||||
errstr = "Unable to find all atoms for %s %s" % (residue[0].res_name,
|
errstr = "Unable to find all atoms for %s %s" % (
|
||||||
residue[0].res_num)
|
residue[0].res_name, residue[0].res_num)
|
||||||
raise ValueError(errstr)
|
raise ValueError(errstr)
|
||||||
h1_atom = protonate_direction(n_atom, o_atom, c_atom)
|
h1_atom = protonate_direction(n_atom, o_atom, c_atom)
|
||||||
h1_atom.name = "HN1"
|
h1_atom.name = "HN1"
|
||||||
@@ -604,8 +604,8 @@ def hydrogen_bond_interaction(group1, group2, version):
|
|||||||
atoms2 = group2.get_interaction_atoms(group1)
|
atoms2 = group2.get_interaction_atoms(group1)
|
||||||
[closest_atom1, dist, closest_atom2] = get_smallest_distance(atoms1, atoms2)
|
[closest_atom1, dist, closest_atom2] = get_smallest_distance(atoms1, atoms2)
|
||||||
if None in [closest_atom1, closest_atom2]:
|
if None in [closest_atom1, closest_atom2]:
|
||||||
warning('Side chain interaction failed for %s and %s' % (group1.label,
|
warning('Side chain interaction failed for %s and %s' % (
|
||||||
group2.label))
|
group1.label, group2.label))
|
||||||
return None
|
return None
|
||||||
# get the parameters
|
# get the parameters
|
||||||
[dpka_max, cutoff] = version.get_hydrogen_bond_parameters(closest_atom1,
|
[dpka_max, cutoff] = version.get_hydrogen_bond_parameters(closest_atom1,
|
||||||
|
|||||||
@@ -575,9 +575,11 @@ class ConformationContainer:
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""String that lists statistics of atoms and groups."""
|
"""String that lists statistics of atoms and groups."""
|
||||||
str_ = (
|
fmt = (
|
||||||
'Conformation container %s with %d atoms and %d groups'
|
"Conformation container {name} with {natoms:d} atoms and "
|
||||||
% (self.name, len(self), len(self.groups)))
|
"{ngroups:d} groups")
|
||||||
|
str_ = fmt.format(
|
||||||
|
name=self.name, natoms=len(self), ngroups=len(self.groups))
|
||||||
return str_
|
return str_
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
|
|||||||
@@ -146,31 +146,27 @@ class NonCovalentlyCoupledGroups:
|
|||||||
"""
|
"""
|
||||||
self.parameters = conformation.parameters
|
self.parameters = conformation.parameters
|
||||||
if verbose:
|
if verbose:
|
||||||
info('')
|
info_fmt = (
|
||||||
info(' Warning: When using the -d option, pKa values based on '
|
'\n'
|
||||||
'\'swapped\' interactions')
|
' Warning: When using the -d option, pKa values based on \n'
|
||||||
info(' will be writting to the output .pka file')
|
'\'swapped\' interactions\n'
|
||||||
info('')
|
' will be writting to the output .pka file\n'
|
||||||
info('-' * 103)
|
'\n'
|
||||||
info(' Detecting non-covalently coupled residues')
|
'{sep}\n'
|
||||||
info('-' * 103)
|
'\n'
|
||||||
info(' Maximum pKa difference: %4.2f pKa units'
|
' Detecting non-covalently coupled residues\n'
|
||||||
% self.parameters.max_intrinsic_pka_diff)
|
'{sep}\n'
|
||||||
info(' Minimum interaction energy: %4.2f pKa units'
|
' Maximum pKa difference: {c.max_intrinsic_pka_diff:>4.2f} pKa units\n'
|
||||||
% self.parameters.min_interaction_energy)
|
' Minimum interaction energy: {c.min_interaction_energy:>4.2f} pKa units\n'
|
||||||
info(' Maximum free energy diff.: %4.2f pKa units'
|
' Maximum free energy diff.: {c.max_free_energy_diff:>4.2f} pKa units\n'
|
||||||
% self.parameters.max_free_energy_diff)
|
' Minimum swap pKa shift: {c.min_swap_pka_shift:>4.2f} pKa units\n'
|
||||||
info(' Minimum swap pKa shift: %4.2f pKa units'
|
' pH: {c.pH:>6} \n'
|
||||||
% self.parameters.min_swap_pka_shift)
|
' Reference: {c.reference}\n'
|
||||||
info(' pH: %6s '
|
' Min pKa: {c.min_pka:>4.2f}\n'
|
||||||
% str(self.parameters.pH))
|
' Max pKa: {c.max_pka:>4.2f}\n'
|
||||||
info(' Reference: %s'
|
'\n')
|
||||||
% self.parameters.reference)
|
sep = "-" * 103
|
||||||
info(' Min pKa: %4.2f'
|
info(info_fmt.format(sep=sep, c=self))
|
||||||
% self.parameters.min_pka)
|
|
||||||
info(' Max pKa: %4.2f'
|
|
||||||
% self.parameters.max_pka)
|
|
||||||
info('')
|
|
||||||
# find coupled residues
|
# find coupled residues
|
||||||
titratable_groups = conformation.get_titratable_groups()
|
titratable_groups = conformation.get_titratable_groups()
|
||||||
if not conformation.non_covalently_coupled_groups:
|
if not conformation.non_covalently_coupled_groups:
|
||||||
@@ -364,20 +360,24 @@ class NonCovalentlyCoupledGroups:
|
|||||||
formatted string with information.
|
formatted string with information.
|
||||||
"""
|
"""
|
||||||
str_ = (
|
str_ = (
|
||||||
""" %s and %s coupled (prot.state): %5.2f
|
" {label1} and {label2} coupled (prot.state): {coupl_fact:>5.2f}\n"
|
||||||
Energy levels: %6.2f, %6.2f (difference: %6.2f) at pH %6.2f
|
" Energy levels: {def_energy:>6.2f}, {swap_energy:>6.2f} "
|
||||||
Interaction energy: %6.2f
|
"(difference: {diff_energy:>6.2f}) at pH {ph:>6.2f}\n"
|
||||||
Intrinsic pka's: %6.2f, %6.2f (difference: %6.2f)
|
" Interaction energy: {int_energy:>6.2f}\n"
|
||||||
Swapped pKa's: %6.2f, %6.2f (difference: %6.2f, %6.2f)"""
|
" Intrinsic pka's: {pka1:>6.2f}, {pka2:>6.2f} "
|
||||||
% (
|
"(difference: {diff_pka:>6.2f})\n"
|
||||||
group1.label, group2.label, data['coupling_factor'],
|
" Swapped pKa's: {swap1:>6.2f}, {swap2:>6.2f} "
|
||||||
data['default_energy'], data['swapped_energy'],
|
"(difference: {shift1:>6.2f}, {shift2:>6.2f})"
|
||||||
data['default_energy'] - data['swapped_energy'],
|
).format(
|
||||||
data['pH'], data['interaction_energy'],
|
label1=group1.label, label2=group2.label,
|
||||||
group1.intrinsic_pka, group2.intrinsic_pka,
|
coupl_fact=data['coupling_factor'], def_energy=data['default_energy'],
|
||||||
group1.intrinsic_pka-group2.intrinsic_pka,
|
swap_energy=data['swapped_energy'],
|
||||||
data['swapped_pka1'], data['swapped_pka2'],
|
diff_energy=data['default_energy']-data['swapped_energy'], ph=data['pH'],
|
||||||
data['pka_shift1'], data['pka_shift2']))
|
int_energy=data['interaction_energy'], pka1=group1.intrinsic_pka,
|
||||||
|
pka2=group2.intrinsic_pka,
|
||||||
|
diff_pka=group1.intrinsic_pka-group2.intrinsic_pka,
|
||||||
|
swap1=data['swapped_pka1'], swap2=data['swapped_pka2'],
|
||||||
|
shift1=data['pka_shift1'], shift2=data['pka_shift2'])
|
||||||
return str_
|
return str_
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -76,15 +76,18 @@ class Group:
|
|||||||
if self.atom.terminal:
|
if self.atom.terminal:
|
||||||
self.residue_type = self.atom.terminal
|
self.residue_type = self.atom.terminal
|
||||||
if self.atom.type == 'atom':
|
if self.atom.type == 'atom':
|
||||||
self.label = '%-3s%4d%2s' % (self.residue_type, atom.res_num,
|
fmt = "{g.residue_type:<3s}{a.res_num:>4d}{a.chain_id:>2s}"
|
||||||
atom.chain_id)
|
self.label = fmt.format(g=self, a=atom)
|
||||||
elif self.atom.res_name in ['DA ', 'DC ', 'DG ', 'DT ']:
|
elif self.atom.res_name in ['DA ', 'DC ', 'DG ', 'DT ']:
|
||||||
self.label = '%1s%1s%1s%4d%2s' % (
|
fmt = "{type:1s}{elem:1s}{name:1s}{res_num:>4d}{chain:>2s}"
|
||||||
self.residue_type[1], atom.element,
|
self.label = fmt.format(
|
||||||
atom.name.replace('\'', '')[-1], atom.res_num, atom.chain_id)
|
type=self.residue_type[1], elem=atom.element,
|
||||||
|
name=atom.name.replace('\'', '')[-1], res_num=atom.res_num,
|
||||||
|
chain=atom.chain_id)
|
||||||
else:
|
else:
|
||||||
self.label = '%-3s%4s%2s' % (
|
fmt = "{type:<3s}{name:>4s}{chain:>2s}"
|
||||||
self.residue_type, atom.name, atom.chain_id)
|
self.label = fmt.format(
|
||||||
|
type=self.residue_type, name=atom.name, chain=atom.chain_id)
|
||||||
# container for squared distances
|
# container for squared distances
|
||||||
self.squared_distances = {}
|
self.squared_distances = {}
|
||||||
|
|
||||||
@@ -545,11 +548,10 @@ class Group:
|
|||||||
penalty = (
|
penalty = (
|
||||||
' NB: Discarded due to coupling with %s'
|
' NB: Discarded due to coupling with %s'
|
||||||
% self.coupled_titrating_group.label)
|
% self.coupled_titrating_group.label)
|
||||||
str_ = (
|
fmt = (
|
||||||
" %9s %8.2lf %10.2lf %18s %s\n"
|
" {g.label:>9s} {g.pka_value:8.2f} {g.model_pka:10.2f} "
|
||||||
% (self.label, self.pka_value, self.model_pka, ligand_type,
|
"{type:>18s} {penalty:s}\n")
|
||||||
penalty))
|
return fmt.format(g=self, type=ligand_type, penalty=penalty)
|
||||||
return str_
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return 'Group (%s) for %s' % (self.type, self.atom)
|
return 'Group (%s) for %s' % (self.type, self.atom)
|
||||||
|
|||||||
@@ -141,8 +141,12 @@ class LigandPkaValues:
|
|||||||
warning(errstr)
|
warning(errstr)
|
||||||
propka.pdb.write_mol2_for_atoms(atoms, filename)
|
propka.pdb.write_mol2_for_atoms(atoms, filename)
|
||||||
# Marvin calculate pKa values
|
# Marvin calculate pKa values
|
||||||
options = ('pka -a %d -b %d --min %f --max %f -d large'
|
fmt = (
|
||||||
% (num_pkas, num_pkas, min_ph, max_ph))
|
'pka -a {num1} -b {num2} --min {min_ph} '
|
||||||
|
'--max {max_ph} -d large')
|
||||||
|
options = (
|
||||||
|
fmt.format(
|
||||||
|
num1=num_pkas, num2=num_pkas, min_ph=min_ph, max_ph=max_ph))
|
||||||
(output, errors) = subprocess.Popen(
|
(output, errors) = subprocess.Popen(
|
||||||
[self.cxcalc, filename]+options.split(), stdout=subprocess.PIPE,
|
[self.cxcalc, filename]+options.split(), stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE).communicate()
|
stderr=subprocess.PIPE).communicate()
|
||||||
|
|||||||
@@ -270,9 +270,10 @@ def get_charge_profile_section(protein, conformation='AVR', _=None):
|
|||||||
if profile is None:
|
if profile is None:
|
||||||
str_ += "Could not determine charge profile\n"
|
str_ += "Could not determine charge profile\n"
|
||||||
else:
|
else:
|
||||||
str_ += "%6s%10s%8s\n" % ("pH", "unfolded", "folded")
|
str_ += ' pH unfolded folded\n'
|
||||||
for (ph, q_mod, q_pro) in profile:
|
for (ph, q_mod, q_pro) in profile:
|
||||||
str_ += "%6.2lf%10.2lf%8.2lf\n" % (ph, q_mod, q_pro)
|
str_ += "{ph:6.2f}{qm:10.2f}{qp:8.2f}\n".format(
|
||||||
|
ph=ph, qm=q_mod, qp=q_pro)
|
||||||
pi_pro, pi_mod = protein.get_pi(conformation=conformation)
|
pi_pro, pi_mod = protein.get_pi(conformation=conformation)
|
||||||
if pi_pro is None or pi_mod is None:
|
if pi_pro is None or pi_mod is None:
|
||||||
str_ += "Could not determine the pI\n\n"
|
str_ += "Could not determine the pI\n\n"
|
||||||
|
|||||||
@@ -225,14 +225,17 @@ class Parameters:
|
|||||||
'NAM': ['AMD'], 'N1': [], 'O2': []}
|
'NAM': ['AMD'], 'N1': [], 'O2': []}
|
||||||
for group1 in agroups:
|
for group1 in agroups:
|
||||||
for group2 in lgroups:
|
for group2 in lgroups:
|
||||||
interaction = '%3s %3s %1s %4s %4s' % (
|
fmt = "{grp1:>3s} {grp2:>3s} {mat:1s} {val1:4} {val2:4}"
|
||||||
group1, group2, self.interaction_matrix[group1][group2],
|
interaction = fmt.format(
|
||||||
self.sidechain_cutoffs.get_value(group1, group2)[0],
|
grp1=group1, grp2=group2,
|
||||||
self.sidechain_cutoffs.get_value(group1, group2)[1])
|
mat=self.interaction_matrix[group1][group2],
|
||||||
|
val1=self.sidechain_cutoffs.get_value(group1, group2)[0],
|
||||||
|
val2=self.sidechain_cutoffs.get_value(group1, group2)[1])
|
||||||
map_interaction = ''
|
map_interaction = ''
|
||||||
if group2 in map_:
|
if group2 in map_:
|
||||||
for val in map_[group2]:
|
for val in map_[group2]:
|
||||||
map_interaction += '|%3s %3s %1s %4s %4s' % (
|
fmt = "|{grp1:>3s} {grp2:>3s} {mat:1s} {val1:4} {val2:4}"
|
||||||
|
map_interaction += fmt.format(
|
||||||
group1, val, self.interaction_matrix[group1][val],
|
group1, val, self.interaction_matrix[group1][val],
|
||||||
self.sidechain_cutoffs.get_value(group1, val)[0],
|
self.sidechain_cutoffs.get_value(group1, val)[0],
|
||||||
self.sidechain_cutoffs.get_value(group1, val)[1])
|
self.sidechain_cutoffs.get_value(group1, val)[1])
|
||||||
@@ -334,13 +337,14 @@ Group1 & Group2 & Interaction & c1 &c2 \\\\
|
|||||||
if (self.sidechain_cutoffs.get_value(group1, group2)
|
if (self.sidechain_cutoffs.get_value(group1, group2)
|
||||||
== self.sidechain_cutoffs.default):
|
== self.sidechain_cutoffs.default):
|
||||||
continue
|
continue
|
||||||
str_ += ('%3s & %3s & %1s & %4s & %4s\\\\ \n'
|
fmt = (
|
||||||
% (group1, group2,
|
"{grp1:>3s} & {grp2:>3s} & {mat:1s} & {val1:4} & "
|
||||||
|
"{val2:4}\\\\ \n")
|
||||||
|
str_ += fmt.format(
|
||||||
|
group1, group2,
|
||||||
self.interaction_matrix[group1][group2],
|
self.interaction_matrix[group1][group2],
|
||||||
self.sidechain_cutoffs.get_value(group1,
|
self.sidechain_cutoffs.get_value(group1, group2)[0],
|
||||||
group2)[0],
|
self.sidechain_cutoffs.get_value(group1, group2)[1])
|
||||||
self.sidechain_cutoffs.get_value(group1,
|
|
||||||
group2)[1]))
|
|
||||||
if group1 == group2:
|
if group1 == group2:
|
||||||
break
|
break
|
||||||
str_ += ' \\end{longtable}\n'
|
str_ += ' \\end{longtable}\n'
|
||||||
|
|||||||
Reference in New Issue
Block a user