2 """This script shows how to create a system with multiple copies of the same molecule.
3 We also create some crosslinks which take into account the ambiguity.
4 The key to ambiguity is using the same molecule name for ambiguous copies.
5 That way when you perform Selection it automatically finds all relevant molecules.
30 st1 = s.create_state()
31 st2 = s.create_state()
36 m1A = st1.create_molecule(
'ProtA',sequence,chain_id=
'A')
37 m1A.add_representation(m1A,resolutions=[1])
38 m1B = m1A.create_clone(chain_id=
'B')
42 m1C = st1.create_molecule(
'ProtC',sequence,chain_id=
'C')
43 m1C.add_representation(m1C,resolutions=[1])
46 m2A = st2.create_molecule(
'ProtA',sequence,chain_id=
'A')
47 m2A.add_representation(m2A,resolutions=[1])
48 m2C = st2.create_molecule(
'ProtC',sequence,chain_id=
'C')
49 m2C.add_representation(m2C,resolutions=[1])
58 for mol
in (m1A,m1B,m1C,m2A,m2C):
59 dof.create_flexible_beads(mol,
61 dof.create_super_rigid_body(mol)
70 lines =
'''id,mol1,res1,mol2,res2,score
73 tf = tempfile.NamedTemporaryFile(delete=
False, mode=
'w')
79 kw.set_unique_id_key(
"id")
80 kw.set_protein1_key(
"mol1")
81 kw.set_protein2_key(
"mol2")
82 kw.set_residue1_key(
"res1")
83 kw.set_residue2_key(
"res2")
84 kw.set_id_score_key(
"score")
85 xldb = IMP.pmi.io.crosslink.CrossLinkDataBase(kw)
86 xldb.create_set_from_file(tf.name)
92 CrossLinkDataBase=xldb,
98 output_objects.append(xlr)
99 rmf_restraints.append(xlr)
100 dof.get_nuisances_from_restraint(xlr)
104 for mol
in (m1A,m1B,m1C,m2A,m2C):
107 output_objects.append(cr)
108 rmf_restraints.append(cr)
113 output_objects.append(evr1)
116 output_objects.append(evr2)
133 crosslink_restraints=rmf_restraints,
134 monte_carlo_sample_objects=dof.get_movers(),
135 global_output_directory=
'ambiguity_output/',
136 output_objects=output_objects,
137 monte_carlo_steps=10,