matching_a_rigid_body_to_a_known_fragment
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
matching_a_rigid_body_to_a_known_fragment [2011/08/25 18:13] – alancoelho | matching_a_rigid_body_to_a_known_fragment [2022/11/03 15:08] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Matching a rigid body to a known fragment ====== | ||
+ | The translation and rotation parameters of a known rigid body fragment within a unit cell can be determined by refining a rigid body against the known fragment. Consider a known fragment comprising two C atoms with sites named wC1 and wC2. Then create two more sites called C1 and C2 as follows: | ||
+ | |||
+ | |||
+ | <code topas> | ||
+ | continue_after_convergence | ||
+ | xdd... | ||
+ | str... | ||
+ | site wC1... occ C 0 | ||
+ | site wC2... occ C 0 | ||
+ | ... | ||
+ | site C1... | ||
+ | site C2... | ||
+ | ... | ||
+ | rigid | ||
+ | z_matrix C1... | ||
+ | z_matrix C2... | ||
+ | rotate @... | ||
+ | rand_xyz 2 | ||
+ | translate | ||
+ | tx ... val_on_continue = Val + Rand(-2, 2); | ||
+ | ty ... val_on_continue = Val + Rand(-2, 2); | ||
+ | tz ... val_on_continue = Val + Rand(-2, 2); | ||
+ | |||
+ | Distance_Restrain(" | ||
+ | Distance_Restrain(" | ||
+ | |||
+ | Here the known site positions start with ' | ||
+ | |||
+ | Refinement would then fit the rigid body against the known site positions. | ||
+ | |||
+ | --- // | ||
+ | |||
+ | This works as long as you don't have to consider symmetry equivalents of the C1 and wC1 sites for the mapping to work (e.g. atoms in adjacent unit cells). | ||
+ | |||
+ | <code topas> | ||
+ | Match_Site(B4_1, | ||
+ | |||
+ | macro Match_Site(s1, | ||
+ | { | ||
+ | #m_ifarg c "" | ||
+ | # | ||
+ | #m_endif | ||
+ | box_interaction to_N 0 s1 s2 c = R; | ||
+ | local =c/Z;: Rcalc | ||
+ | penalty = (wby) c^2; | ||
+ | } | ||
+ | |||
+ | </ |