Charmm Topology¶
Charmm Topology¶
- class sasmol.charmm_topology.CharmmTopology[source]¶
Bases:
objectThis class contains charmm topology information used other modules.
The output topology dictionary looks like the following examples:
Examples
>>> import pprint >>> import sasmol.topology as topology >>> test = topology.CharmmTopology() >>> test.read_charmm_topology() >>> pprint.pprint(test.topology_info['NTER'],width=100) {'ATOM': [['N', 'NH3', '-0.30'], ['HT1', 'HC', '0.33'], ['HT2', 'HC', '0.33'], ['HT3', 'HC', '0.33'], ['CA', 'CT1', '0.21'], ['HA', 'HB', '0.10']], 'BOND': [['HT1', 'N'], ['HT2', 'N'], ['HT3', 'N']], 'DELE': [['ATOM', 'HN']], 'DONO': ['HT1', 'N', 'HT2', 'N', 'HT3', 'N'], 'IC': [['HT1', 'N', 'CA', 'C', '0.0000', '0.0000', '180.0000', '0.0000', '0.0000'], ['HT2', 'CA', '*N', 'HT1', '0.0000', '0.0000', '120.0000', '0.0000', '0.0000'], ['HT3', 'CA', '*N', 'HT2', '0.0000', '0.0000', '120.0000', '0.0000', '0.0000']], 'TOTAL_CHARGE': '1.00'}
>>> import pprint >>> import sasmol.topology as topology >>> test = topology.CharmmTopology() >>> test.read_charmm_topology() >>> pprint.pprint(test.topology_info['ALA'],width=100) {'ACCE': ['O', 'C'], 'ATOM': [['N', 'NH1', '-0.47'], ['HN', 'H', '0.31'], ['CA', 'CT1', '0.07'], ['HA', 'HB', '0.09'], ['CB', 'CT3', '-0.27'], ['HB1', 'HA', '0.09'], ['HB2', 'HA', '0.09'], ['HB3', 'HA', '0.09'], ['C', 'C', '0.51'], ['O', 'O', '-0.51']], 'BOND': [['CB', 'CA'], ['N', 'HN'], ['N', 'CA'], ['C', 'CA'], ['C', '+N'], ['CA', 'HA'], ['CB', 'HB1'], ['CB', 'HB2'], ['CB', 'HB3']], 'DONO': ['HN', 'N'], 'DOUB': [['O', 'C']], 'IC': [['-C', 'CA', '*N', 'HN', '1.3551', '126.4900', '180.0000', '115.4200', '0.9996'], ['-C', 'N', 'CA', 'C', '1.3551', '126.4900', '180.0000', '114.4400', '1.5390'], ['N', 'CA', 'C', '+N', '1.4592', '114.4400', '180.0000', '116.8400', '1.3558'], ['+N', 'CA', '*C', 'O', '1.3558', '116.8400', '180.0000', '122.5200', '1.2297'], ['CA', 'C', '+N', '+CA', '1.5390', '116.8400', '180.0000', '126.7700', '1.4613'], ['N', 'C', '*CA', 'CB', '1.4592', '114.4400', '123.2300', '111.0900', '1.5461'], ['N', 'C', '*CA', 'HA', '1.4592', '114.4400', '-120.4500', '106.3900', '1.0840'], ['C', 'CA', 'CB', 'HB1', '1.5390', '111.0900', '177.2500', '109.6000', '1.1109'], ['HB1', 'CA', '*CB', 'HB2', '1.1109', '109.6000', '119.1300', '111.0500', '1.1119'], ['HB1', 'CA', '*CB', 'HB3', '1.1109', '109.6000', '-119.5800', '111.6100', '1.1114']], 'IMPR': [['N', '-C', 'CA', 'HN'], ['C', 'CA', '+N', 'O']],
self parameter is not shown in the
Parameterssection in the documentation- add(dictionary, key, value, **kwargs)[source]¶
This method is used by the self.read_topology method.
It will check whether the key is in the dictionary: if yes, append value to dictionary[key] if no, initialize dictionary[key] as [value]
- Parameters
dictionary – dictionary : containing existing key, value pairs
key – dictionary key : key to query and perhaps intialize
value – dictionary value : value add
kwargs – optional future arguments
- Return type
updated dictionary
Examples
>>> import sasmol.topology as topology >>> d = {} >>> d['ALA'] = 'RESI ALA' >>> test = topology.CharmmTopology() >>> test.add(d, 'GLU', 'GLU') >>> d {'GLU': ['GLU'], 'ALA': 'RESI ALA'} >>> test.add(d, 'ASP', 'RESI ASP') >>> d {'ASP': ['RESI ASP'], 'GLU': ['GLU'], 'ALA': 'RESI ALA'}
- charmm_names(**kwargs)[source]¶
- Parameters
kwargs – optional future arguments
- Returns
dictionary : atom_name and list of atom names for hydrogen, carbon, nitrogen, oxygen, sulfur, phosphorus, other
- Return type
charmm_names
Examples
>>> import sasmol.properties as properties >>> properties = properties.Atomic() >>> properties.charmm_names()['sulfur'] ['SG', 'SD', '1SG', '2SG']
- check_charmm_atomic_order_reorganize(**kwargs)[source]¶
re-organize the atomic list according to the charmm topology contract do nothing if the atomic order alreay match that in the charmm topology file meanwhile make sure there are no missing or extra atoms H-atoms are required Patch N-ter for the first residue and C-ter for the last residue in each segment
- Parameters
kwargs – optional future arguments
Examples
>>> import sasmol.system as system >>> molecule = system.Molecule('hiv1_gag.pdb') >>> molecule.check_charmm_atomic_order_reorganize()
- Returns
list : with error code
- Return type
error
Note
error code needs to be addressed and handled globally
- compare_list_ignore_order(l1, l2, **kwargs)[source]¶
Compare two lists while ignoring order
- Parameters
l1 – list : list 1
l2 – list : list 2
kwargs – optional future arguments
Examples
>>> import sasmol.topology as topology >>> test = topology.CharmmTopology() >>> l1 = [1, 2, 4] >>> l2 = [2, 1, 4] >>> test.compare_list_ignore_order(l1, l2) True
- Return type
Boolean
- patch_charmm_residue_atoms(residue, patch, **kwargs)[source]¶
Applies ‘patch’ to ‘residue’ based on the charmm topology definition to add / remove atoms as needed. Only ATOM and DELE records are accommodated
- Parameters
residue – string : residue name
patch – string : patch name
kwargs – optional future arguments
Examples
>>> import sasmol.system as system >>> molecule = system.Molecule('hiv1_gag.pdb') >>> molecule.check_charmm_atomic_order_reorganize() >>> molecule.patch_charmm_residue_atoms('GLY','GLYP')
- Return type
updated dictionary entry for residue in question
Note
Error list is defined and used, but not returned. Needs to be handled globally.
- read_charmm_topology(topology_file_path='', topology_file_name='top_all27_prot_na.inp', **kwargs)[source]¶
Read and parse the charmm topology file A comprehensive dictionary (topology_info) will be built to store all the topology information The strategy for parsing topology file is to split words in each line
- Parameters
topology_file_path – string : default = ‘’
topology_file_name – string : default = ‘top_all27_prot_na.inp’
kwargs – optional future arguments
Examples
>>> import pprint >>> import sasmol.topology as topology >>> test = topology.CharmmTopology() >>> test.read_charmm_topology() >>> pprint.pprint(test.topology_info['NTER'],width=100) {'ATOM': [['N', 'NH3', '-0.30'], ['HT1', 'HC', '0.33'], ['HT2', 'HC', '0.33'], ['HT3', 'HC', '0.33'], ['CA', 'CT1', '0.21'], ['HA', 'HB', '0.10']], 'BOND': [['HT1', 'N'], ['HT2', 'N'], ['HT3', 'N']], 'DELE': [['ATOM', 'HN']], 'DONO': ['HT1', 'N', 'HT2', 'N', 'HT3', 'N'], 'IC': [['HT1', 'N', 'CA', 'C', '0.0000', '0.0000', '180.0000', '0.0000', '0.0000'], ['HT2', 'CA', '*N', 'HT1', '0.0000', '0.0000', '120.0000', '0.0000', '0.0000'], ['HT3', 'CA', '*N', 'HT2', '0.0000', '0.0000', '120.0000', '0.0000', '0.0000']], 'TOTAL_CHARGE': '1.00'}
- Returns
list : with error code
- Return type
error
Note
error code needs to be addressed and handled globally
- setup_charmm_residue_atoms(**kwargs)[source]¶
Build the atom list of all the residues in the charmm topology file
- Parameters
kwargs – optional future arguments
Examples
>>> import sasmol.topology as topology >>> test = topology.CharmmTopology() >>> test.read_charmm_topology() >>> test.setup_charmm_residue_atoms()
- Returns
self.charmm_residue_atoms
- Return type
new dictionary entry for residue in question
- setup_cys_patch_atoms_simple(**kwargs)[source]¶
A way to set up cys patch atoms simply remove HG1 atom from the atom list
- Parameters
kwargs – optional future arguments
Examples
>>> import sasmol.topology as topology >>> import pprint >>> test = topology.CharmmTopology() >>> test.read_charmm_topology() >>> pprint.pprint(self.topology_info['CYS']['ATOM']) [['N', 'NH1', '-0.47'], ['HN', 'H', '0.31'], ['CA', 'CT1', '0.07'], ['HA', 'HB', '0.09'], ['CB', 'CT2', '-0.11'], ['HB1', 'HA', '0.09'], ['HB2', 'HA', '0.09'], ['SG', 'S', '-0.23'], ['HG1', 'HS', '0.16'], ['C', 'C', '0.51'], ['O', 'O', '-0.51']] >>> pprint.pprint(test.setup_cys_patch_atoms_simple(), width=80) [['N', 'NH1', '-0.47'], ['HN', 'H', '0.31'], ['CA', 'CT1', '0.07'], ['HA', 'HB', '0.09'], ['CB', 'CT2', '-0.11'], ['HB1', 'HA', '0.09'], ['HB2', 'HA', '0.09'], ['SG', 'S', '-0.23'], ['C', 'C', '0.51'], ['O', 'O', '-0.51']]
- Return type
updated dictionary entry for residue in question