Repository navigation
Example Codes Fail #188
Copy link
Copy link
Open
Description
I'm running Python 3.12.7 locally on my computer and using the latest version of chiLife (1.1.4). In Example 4, some lines of codes returned an error instead of the results presented in the example.
T109R3A = xl.SpinLabel('R3A', 109, T4L, rotlib='R3A_rotlib.npz')
T109NBA = xl.SpinLabel('NBA', 109, T4L, rotlib='NBA')
T109GD3 = xl.SpinLabel('GD3', 109, T4L, sample=5000)The error returned is:
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/MDAnalysis/core/universe.py:743: UserWarning: Reader has no dt information, set to 1.0 ps
dt=self.trajectory.ts.dt * step,
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/chilife/protein_utils.py:148: RuntimeWarning: invalid value encountered in divide
b1 /= np.linalg.norm(b1, axis=-1)[:, None]
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/MDAnalysis/core/universe.py:743: UserWarning: Reader has no dt information, set to 1.0 ps
dt=self.trajectory.ts.dt * step,
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/chilife/protein_utils.py:148: RuntimeWarning: invalid value encountered in divide
b1 /= np.linalg.norm(b1, axis=-1)[:, None]
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/MDAnalysis/core/universe.py:743: UserWarning: Reader has no dt information, set to 1.0 ps
dt=self.trajectory.ts.dt * step,
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/chilife/protein_utils.py:148: RuntimeWarning: invalid value encountered in divide
b1 /= np.linalg.norm(b1, axis=-1)[:, None]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[3], line 35
22 xl.create_library('GD3', 'GD3/GD3_Ensemble.pdb',
23 dihedral_atoms=[['N', 'CA', 'CB', 'SG'],
24 ['CA', 'CB', 'SG', 'C18'],
(...)
28 spin_atoms='Gd1',
29 weights=weights)
34 T4L = xl.fetch('2lzm')
---> 35 T109R3A = xl.SpinLabel('R3A', 109, T4L, rotlib='R3A_rotlib.npz')
36 #T109NBA = xl.SpinLabel('NBA', 109, T4L, rotlib='NBA')
37 #T109GD3 = xl.SpinLabel('GD3', 109, T4L, sample=5000)
39 xl.save(T109R3A, T109NBA, T109GD3, T4L)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/SpinLabel.py:33, in SpinLabel.__init__(self, label, site, protein, chain, rotlib, **kwargs)
30 if not kwargs.get('minimize', False):
31 kwargs.setdefault("eval_clash", True)
---> 33 super().__init__(label, site, protein=protein, chain=chain, rotlib=rotlib, **kwargs)
35 self.label = label
37 # Parse spin delocalization information
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:191, in RotamerEnsemble.__init__(self, res, site, protein, chain, rotlib, **kwargs)
188 if self.chain not in ('A', None):
189 self.name += f"_{self.chain}"
--> 191 self.update(no_lib=True)
193 # Store atom information as atom objects
194 self.atoms = [
195 FreeAtom(name, atype, idx, self.res, self.site, coord)
196 for idx, (coord, atype, name) in enumerate(
197 zip(self._coords[0], self.atom_types, self.atom_names)
198 )
199 ]
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:435, in RotamerEnsemble.update(self, no_lib)
432 self.weights = self._weights.copy()
434 if self.protein is not None:
--> 435 self.protein_setup()
436 else:
437 self.ICs_to_site(self.origin, self.mx)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:440, in RotamerEnsemble.protein_setup(self)
439 def protein_setup(self):
--> 440 self.to_site()
442 # Get weight of current or closest rotamer
443 clash_ignore_idx = self.protein.select_atoms(f"resid {self.site} and segid {self.chain}").ix
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:622, in RotamerEnsemble.to_site(self, site_pos)
619 cmx = ori_mx @ mx
621 self._coords = np.einsum("ijk,kl->ijl", self._coords, cmx) + ori
--> 622 self.ICs_to_site(ori, mx)
623 if self._match_backbone:
624 self.backbone_to_site()
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:642, in RotamerEnsemble.ICs_to_site(self, cori, cmx)
639 m2m3 = self.ic_mx @ self.mx
640 op = {}
--> 642 new_mx = self.internal_coords.chain_operators[0]["mx"] @ m2m3
643 new_ori = (self.internal_coords.chain_operators[0]["ori"] - self.ic_ori) @ m2m3 + self.origin
644 op[0] = {"mx": new_mx, "ori": new_ori}
KeyError: 0This issue was also found in Example 5:
SL1_repack = xl.SpinLabel.from_trajectory(traj, 124, burn_in=5000, spin_atoms=SL1.spin_atoms)
SL2_repack = xl.SpinLabel.from_trajectory(traj, 281, burn_in=5000, spin_atoms=SL2.spin_atoms)The error returned is:
KeyError Traceback (most recent call last)
Cell In[2], line 10
3 SL2 = xl.SpinLabel('R1M', 281, mbp)
5 traj, dE = xl.repack(mbp, SL1, SL2,
6 repetitions=10000, temp=298,
7 off_rotamer=True,
8 repack_radius=10)
---> 10 SL1_repack = xl.SpinLabel.from_trajectory(traj, 124, burn_in=5000, spin_atoms=SL1.spin_atoms)
11 SL2_repack = xl.SpinLabel.from_trajectory(traj, 281, burn_in=5000, spin_atoms=SL2.spin_atoms)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:406, in RotamerEnsemble.from_trajectory(cls, traj, site, chain, energy, burn_in, **kwargs)
404 kwargs.setdefault('eval_clash', False)
405 kwargs.setdefault('_match_backbone', False)
--> 406 return cls(resname, site, chain=chain, rotlib=lib, **kwargs)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/SpinLabel.py:33, in SpinLabel.__init__(self, label, site, protein, chain, rotlib, **kwargs)
30 if not kwargs.get('minimize', False):
31 kwargs.setdefault("eval_clash", True)
---> 33 super().__init__(label, site, protein=protein, chain=chain, rotlib=rotlib, **kwargs)
35 self.label = label
37 # Parse spin delocalization information
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:191, in RotamerEnsemble.__init__(self, res, site, protein, chain, rotlib, **kwargs)
188 if self.chain not in ('A', None):
189 self.name += f"_{self.chain}"
--> 191 self.update(no_lib=True)
193 # Store atom information as atom objects
194 self.atoms = [
195 FreeAtom(name, atype, idx, self.res, self.site, coord)
196 for idx, (coord, atype, name) in enumerate(
197 zip(self._coords[0], self.atom_types, self.atom_names)
198 )
199 ]
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:437, in RotamerEnsemble.update(self, no_lib)
435 self.protein_setup()
436 else:
--> 437 self.ICs_to_site(self.origin, self.mx)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:642, in RotamerEnsemble.ICs_to_site(self, cori, cmx)
639 m2m3 = self.ic_mx @ self.mx
640 op = {}
--> 642 new_mx = self.internal_coords.chain_operators[0]["mx"] @ m2m3
643 new_ori = (self.internal_coords.chain_operators[0]["ori"] - self.ic_ori) @ m2m3 + self.origin
644 op[0] = {"mx": new_mx, "ori": new_ori}
KeyError: 0neighbors = [xl.RotamerEnsemble.from_trajectory(traj, resi, burn_in=5000) for resi in resis]
neighbors = [resi for resi in neighbors if len(resi) > 1]The error returned is:
WARNING:py.warnings:/opt/anaconda3/lib/python3.12/site-packages/chilife/protein_utils.py:148: RuntimeWarning: invalid value encountered in divide
b1 /= np.linalg.norm(b1, axis=-1)[:, None]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[5], line 4
1 resis = [res.resnum for res in mbp.select_atoms('(not resname ALA GLY HOH) and around 14 resnum 124').residues] + \
2 [res.resnum for res in mbp.select_atoms('(not resname ALA GLY HOH) and around 14 resnum 281').residues]
----> 4 neighbors = [xl.RotamerEnsemble.from_trajectory(traj, resi, burn_in=5000) for resi in resis]
5 neighbors = [resi for resi in neighbors if len(resi) > 1]
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:406, in RotamerEnsemble.from_trajectory(cls, traj, site, chain, energy, burn_in, **kwargs)
404 kwargs.setdefault('eval_clash', False)
405 kwargs.setdefault('_match_backbone', False)
--> 406 return cls(resname, site, chain=chain, rotlib=lib, **kwargs)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:191, in RotamerEnsemble.__init__(self, res, site, protein, chain, rotlib, **kwargs)
188 if self.chain not in ('A', None):
189 self.name += f"_{self.chain}"
--> 191 self.update(no_lib=True)
193 # Store atom information as atom objects
194 self.atoms = [
195 FreeAtom(name, atype, idx, self.res, self.site, coord)
196 for idx, (coord, atype, name) in enumerate(
197 zip(self._coords[0], self.atom_types, self.atom_names)
198 )
199 ]
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:437, in RotamerEnsemble.update(self, no_lib)
435 self.protein_setup()
436 else:
--> 437 self.ICs_to_site(self.origin, self.mx)
File /opt/anaconda3/lib/python3.12/site-packages/chilife/RotamerEnsemble.py:642, in RotamerEnsemble.ICs_to_site(self, cori, cmx)
639 m2m3 = self.ic_mx @ self.mx
640 op = {}
--> 642 new_mx = self.internal_coords.chain_operators[0]["mx"] @ m2m3
643 new_ori = (self.internal_coords.chain_operators[0]["ori"] - self.ic_ori) @ m2m3 + self.origin
644 op[0] = {"mx": new_mx, "ori": new_ori}
KeyError: 0Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
mtessmer commentedon Apr 8, 2025
Hi @kylezhang1011,
Thank you for posting this. Can I please ask how you installed chilife? e.g.
pip,condaor through github?kylezhang1011 commentedon Apr 8, 2025
I used
pipto install chilife.mtessmer commentedon Apr 8, 2025
I am not able to reproduce this error. Is there any chance you are using a new version of chilife with an old version of the examples? Also what operating system are you using?
kylezhang1011 commentedon Apr 9, 2025
I'm using MacOS and tried updating chilife and redownloading the example codes. I still got the same error.
mtessmer commentedon Apr 11, 2025
just tried again on Linux with a clean Python environment and still can not reproduce this error.
I would try running with a clean slate:
new python virtual environment
fresh chilife install
fresh download of example code from the github repo in a new folder without anything else in it.
make sure you use the correct environment in jupyter lab. Sometimes, it will use a different environment than the one you used to open the file and not tell you.
make sure you run all the code to create the rotlibs before trying to use them.
mtessmer commentedon Apr 27, 2025
Hi @kylezhang1011, were you able to get the example working?
kylezhang1011 commentedon Apr 28, 2025
I did get the example to work on a Windows computer, but it still does not work on my MacBook for some reason.