Dear all,
What are the methods to log the simulation frames to RMF format
instead of old Chimera style?
I have managed to integrate RMF with IMP.restrainer but not
everything works. It seems to work with restraints like
ExcludedVolume, Distance or EM but not Y2H or PullDown - virtually
all that internally are translated to connectivity restraint make a
script crashing. For example if I modify the
restrainer/nup84_complex_in_bead_representation.py to:
import IMP
import IMP.restrainer
IMP.base.set_log_level(IMP.base.VERBOSE)
# Create restrainer object
restrainer = IMP.restrainer.Main()
# Add representation, restraint, optimization and display to
restrainer
rep =
restrainer.add_representation(IMP.restrainer.get_example_path('input/nup84_representation.xml'))
rsr =
restrainer.add_restraint(IMP.restrainer.get_example_path('input/nup84_restraint.xml'))
#BEGIN ADDED PART
import IMP.rmf
import RMF
rmf= RMF.create_rmf_file('nup84_simulation.rmf')
rmf.set_description("Simulate nup84.\n")
model = restrainer.get_model()
root_hierarchy = rep.get_root_imp_hierarchy()
IMP.rmf.add_hierarchy(rmf, root_hierarchy)
IMP.rmf.add_restraints(rmf, model.get_restraints())
IMP.rmf.save_frame(rmf, 0)
os= IMP.rmf.SaveOptimizerState(rmf)
os.update_always("initial conformation")
restrainer.log = os
#END ADDED PART
opt =
restrainer.add_optimization(IMP.restrainer.get_example_path('input/nup84_optimization.xml'))
disp =
restrainer.add_display(IMP.restrainer.get_example_path('input/nup84_display.xml'),
'some_log_name')
###=======================================================================###
# At this point all data from XML files have been placed into the
model.
# Now it is possible to perform various operations on the IMP
model.
###=======================================================================###
# Save the initial state in Chimera format
# restrainer.log.write('initial.py')
# Perform optimization
restrainer.optimize()
# Save the optimized state in Chimera format
# restrainer.log.write('optimized.py')
(note added lines and old-style Chimera stuff commented out)
I get the following error:
Traceback (most recent call last):
File "nup84_complex_in_bead_representation.py", line 50, in
<module>
IMP.rmf.save_frame(rmf, 0)
File "/home/user/software/imp_dev/lib/IMP/rmf/__init__.py", line
875, in save_frame
return _IMP_rmf.save_frame(*args)
_IMP_base.IOException: UsageError: "Cannot write sentry value to
an RMF file." processing decorator of type Score
WARNING No frames were saved to file "RestraintSaveLink0" even
though objects were added.
If however I change <Y2H> node to <Distance> in
input/nup84_restraint.xml everything runs correctly and I can enjoy
a working RMF file.
Would you have any suggestions how to make RMF logging working
properly?
BTW. I am using the current dev version of IMP and RMF.
Thank you in advance for help,
Jan