[cctbxbb] unexpected behaviour of unit_cell.fractionalize

Pavel Afonine pafonine at lbl.gov
Wed Feb 13 09:19:15 PST 2013


Hi Jan,

I see, yes, that's right.

Just to make sure I correctly understand.. So having *only* sites_cart 
and unit_cell, you want to convert these sites_cart into fractional 
basis such that resulting sites_frac are all between 0 and 1, correct?

Pavel

On 2/13/13 8:43 AM, Jan Marten Simons wrote:
> Am Mittwoch 13 Februar 2013 17:01:37 you wrote:
>> Hi Jan,
>>
>> can this method work for you: sites_mod_positive ? I don't remember what
>> exactly it does but I think it either what you need or at least very close.
> Hi Pavel,
>
> hm, it goes in the right direction, but is not exactly what I'm looking for,
> as it is bound to scatterers and not to sites in general. And adding a
> scatterer for each site I want to convert to the structure first, then
> converting, and than extracting the converted sites from the scatterers
> afterwards seems quite inefficient to me.
>
> Also I think it would be clearer to add the functionality for this to the
> "fractionalize" function as people trying to convert from direct space
> coordinates to fractional coordinates will most likely find this functionality
> first.
>
> Cheers,
> Jan
>   
>> On 2/13/13 7:17 AM, Jan Marten Simons wrote:
>>> Hi,
>>>
>>> When I try to convert a list of direct space coordinates into fractional
>>> coordinates like this:
>>>
>>> from cctbx import xray
>>> from cctbx import crystal
>>> from cctbx.array_family import flex
>>>
>>> structure = xray.structure(
>>>
>>>     special_position_settings=crystal.special_position_settings(
>>>     
>>>       crystal_symmetry=crystal.symmetry(
>>>       
>>>         unit_cell=(3.14098, 4.08327, 5.33966, 83, 109, 129),
>>>         space_group_symbol="P1")))
>>>
>>> sites = flex.vec3_double( ((0.0, 0.1, 0.2), (1.3, 3.0, 2.3), (5.3, 0.1,
>>> 7.3)) ) sites_frac = structure.unit_cell().fractionalize(sites)
>>> print(list(sites_frac))
>>>
>>> Now this returns a list of coordinates where x,y,z may be outside ot the
>>> interval [0,1[. ... quite unexpected.
>>>
>>> It would be very nice to have at least an option like "restrict_to_asu"
>>> in unit_cell.fractionalize which would enforce (x,y,z) to be inside the
>>> asymmetric unit and/or "restrict_to_cell" which would enforce (x,y,z) to
>>> be inside the unit cell.
>>>
>>> Could any of you more into the inner workings of the cctbx add this
>>> functionality, please?
>>>
>>> Thanks in advance,
>>>
>>> Jan
> _______________________________________________
> cctbxbb mailing list
> cctbxbb at phenix-online.org
> http://phenix-online.org/mailman/listinfo/cctbxbb



More information about the cctbxbb mailing list