I think that I have found a small numerical bug. I can not work out how to debug this as my knowledge of c++ is not what is needs to be. I encounter the error using the python interface with the latest nightly build.
To reproduce the error you can play with the two files and code attached. The file that works with the code is 433.pdb. The file that fails is 434.pdb.
Traceback (most recent call last):
File "bug_case.py", line 30, in <module>
surface_area = s.get_solvent_accessibility(IMP.core.XYZRs(particles))
File "/opt/imp/lib/python2.5/site-packages/IMP/saxs/__init__.py", line 428, in get_solvent_accessibility
def get_solvent_accessibility(self, *args): return _IMP_saxs.SolventAccessibleSurface_get_solvent_accessibility(self, *args)
_IMP.UsageException: Passed index not in grid (17, 2, 3)
I suspect it is a numerical instability somewhere as I have a test case that fails where I can modify the file in two ways to create a file that works.
A) I generate a sorter fail (434.cut) case by:
tail -228 434.pdb > 434.cut
B) This calculation will proceed if I generate a slightly shorter file (i.e. remove the first ten lines). This case is generated by:
tail -218 434.pdb > 434.cut
C) The strange part is the calculation will also proceed if the only the first 100 lines are used (i.e. keeping the part that I removed in B ) This case is generated by:
tail -228 434.pdb | head -100 > 434.cut
Any suggestions would be greatly appreciated.
Bryn