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