packages/miew/tools/residue_types.py
#!python3
entries = []
with open('residue_types.csv') as f:
first = True
for line in f:
values = line.strip().split(',')
if first:
keys = values
first = False
else:
entry = dict(zip(keys, values))
assert len(entry.keys()) == len(keys)
entry['nameQuoted'] = "'{}'".format(entry['name'])
entries.append(entry)
def format_entry(entry):
return "{nameQuoted:<5}: new ResidueType('{name}', '{fullName}', '{letterCode}')".format(**entry)
print('''\
// DO NOT EDIT MANUALLY! Autogenerated from residue_types.csv by residue_types.py.
ResidueType.StandardTypes = {
/* eslint-disable no-magic-numbers */
%s
/* eslint-enable no-magic-numbers */
};
''' % ',\n'.join(' ' + format_entry(entry) for entry in entries))
def format_color_entry(entry, key):
return "{nameQuoted:<5}: {color}".format(color=entry[key], **entry)
for key in filter(lambda x: x.startswith('color'), keys):
print('''\
// DO NOT EDIT MANUALLY! Autogenerated from residue_types.csv by residue_types.py.
/* %s */.colors = {
/* eslint-disable no-magic-numbers */
%s
/* eslint-enable no-magic-numbers */
};
''' % (key, ',\n'.join(' ' + format_color_entry(entry, key) for entry in entries if entry[key])))