Warning: Trying to access array offset on value of type null in /home/site/wwwroot/lib/plugins/move/action/rename.php on line 42
Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/Action/Export.php on line 106
Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/Action/Export.php on line 106
Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/Action/Export.php on line 106
====== 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:
only_penalties
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("C1 wC1", 0, 0, 0, 1)
Distance_Restrain("C2 wC2", 0, 0, 0, 1)
Here the known site positions start with 'w'; these sites are not part of the rigid body. The sites named C1 and C2 are part of the rigid nody and only the rotate and translate parameters of the rigid body are refined. Note, the use of only_penalties. Also note that setting occupancies to zero means that the site can be used in penalties but it won’t take part in structure factor calculations if observed data were to be refined against.
Refinement would then fit the rigid body against the known site positions.
--- //[[alan.coelho@bigpond.com|Alan Coelho]] 2011/08/25 19:13//
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). In that case you have to specify the full site label. The macro below might work for the more general case. The box_interaction sum is over all distances in the unit cell. Entering Z for site multiplicity should return the distance between the rigid body and target. It's untested.
Match_Site(B4_1, O*, 1, , 4, 1.2127903`)
macro Match_Site(s1, s2, wby, c, Z, Rcalc)
{
#m_ifarg c ""
#m_unique_not_refine c
#m_endif
box_interaction to_N 0 s1 s2 c = R;
local =c/Z;: Rcalc
penalty = (wby) c^2;
}