Skip to content

Commit

Permalink
Code linting and add test
Browse files Browse the repository at this point in the history
  • Loading branch information
laumalo committed Dec 21, 2020
1 parent eb02cd7 commit d9c72be
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 8 deletions.
27 changes: 27 additions & 0 deletions peleffy/tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,33 @@ def test_peleffy_argparse(self):
assert parsed_args.with_solvent is False, \
'Unexpected with_solvent settings were parsed'

# Test charges_from_file argument
parsed_args = parse_args(['BHP.pdb',
'--charges_from_file', 'BHP.mae'])

assert parsed_args.as_datalocal is False, \
'Unexpected as_datalocal settings were parsed'
assert parsed_args.charge_method == 'am1bcc', \
'Unexpected charge_method settings were parsed'
assert parsed_args.debug is False, \
'Unexpected debug settings were parsed'
assert parsed_args.forcefield == 'openff_unconstrained-1.3.0.offxml', \
'Unexpected forcefield settings were parsed'
assert parsed_args.include_terminal_rotamers is False, \
'Unexpected include_terminal_rotamers settings were parsed'
assert parsed_args.charges_from_file == 'BHP.mae', \
'Unexpected charges_from_file settings were parsed'
assert parsed_args.output is None, \
'Unexpected output settings were parsed'
assert parsed_args.pdb_file == 'BHP.pdb', \
'Unexpected pdb_file settings were parsed'
assert parsed_args.resolution == 30, \
'Unexpected resolution settings were parsed'
assert parsed_args.silent is False, \
'Unexpected silent settings were parsed'
assert parsed_args.with_solvent is False, \
'Unexpected with_solvent settings were parsed'

# Test include_terminal_rotamers argument
parsed_args = parse_args(['methane.pdb',
'--include_terminal_rotamers'])
Expand Down
18 changes: 10 additions & 8 deletions peleffy/utils/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ def convert_all_quantities_to_string(data_structure):

return obj_to_return


def parse_charges_from_mae(path, parameters):
"""
It reads an external file containing the partial charges to assign to the
Expand All @@ -245,8 +246,8 @@ def parse_charges_from_mae(path, parameters):
import re

# Read external file containing the partial charges information
params_info, params_list =([] for i in range(2))
copy = False
params_info, params_list = ([] for i in range(2))
copy = False
with open(path, 'r') as file:
for line in file.readlines():
if bool(re.match(r' m_atom\[(.*?)\] {', line)):
Expand All @@ -256,16 +257,16 @@ def parse_charges_from_mae(path, parameters):
type_data = 'params'
if '}' in line:
copy = False
if copy == True and type_data == 'info':
if copy is True and type_data == 'info':
params_info.append(line)
if copy == True and type_data == 'params':
if copy is True and type_data == 'params':
params_list.append(line)
params_info = [ p.replace('\n', '').strip() for p in params_info[1:]]
params_info = [p.replace('\n', '').strip() for p in params_info[1:]]
params_list = [l.replace('"', '').split() for l in params_list[1:-1]]

# Get the index of the atom name and charge from the parameter's list
idx_charges, idx_atom_name = (None for i in range(2))
for idx,line in enumerate(params_info):
for idx, line in enumerate(params_info):
if 's_m_pdb_atom_name' in line:
idx_atom_name = idx
if 'r_m_charge1' in line:
Expand All @@ -285,15 +286,16 @@ def parse_charges_from_mae(path, parameters):
atom_name = atom_name.replace('_', '')
if atom_name in d:
new_charges_parameters.append(unit.Quantity(
value = float(d.get(atom_name)),
unit = unit.elementary_charge))
value=float(d.get(atom_name)),
unit=unit.elementary_charge))
else:
raise ValueError(
"Molecule atom name {} does not match with ".format(atom_name)
+ "any external file atom name's.")
parameters['charges'] = new_charges_parameters
return parameters


class Logger(object):
"""
It contains all the required methods to handle logging messages.
Expand Down

0 comments on commit d9c72be

Please sign in to comment.