Just to add to the already-excellent list of replies, this can also be done 
quite straightforwardly with the Clipper plugin in ChimeraX. I’d be happy to 
provide an example script if you want one.

Best regards,

Tristan
 

 

> On 12 Jan 2020, at 18:54, orly avraham <[email protected]> wrote:
> 
> Hi Marcin,
> 
> Thank you very much for your detailed reply!
> You pointed out many special cases that I wouldn't have thought of.
> Indeed an existing solution is highly preferred, and I appreciate you 
> pointing out several available libraries. I came across Gemmi and I will give 
> it another look, and I will examine the additional resources you mentioned as 
> well.
> 
> Best regards,
> Orly Avraham
> 
>> On Sun, Jan 12, 2020 at 5:59 PM Marcin Wojdyr <[email protected]> wrote:
>> Hi Zhijie,
>> 
>> it's good and instructive to implement such things from the ground up,
>> but there are many special cases that one would be discovering while
>> testing this procedure, so if the time is limited it may be better to
>> use an existing solution.
>> 
>> For instance, here one may find out that using the SCALE1 record
>> doesn't give the sufficient accuracy. In the example in your script
>> you have 6 significant digits in the unit cell lengths in CRYST1, but
>> only 4 significant digits in SCALE1. (The accuracy of SCALE1 is
>> problematic in general; sometimes it needs to be manually removed when
>> a program reads it in preference to CRYST1.)
>> 
>> Then one may find out that the 3x3x3 supercell is not sufficient. If
>> the molecule is far from the origin, symmetry operations send it far
>> away. For example, 5M3H annotates (in the mmCIF format) hydrogen bond
>> between 1_555 and 2_11516 - the symmetry mate is shifted 16 unit cells
>> in the z direction. Since you already use fractional coordinates in
>> your script you could tell directly from the center-of-mass
>> coordinates how many unit cells it should be shifted. Say, you have
>> x=3.1, so to shift it near the origin you shift it by 3 unit cells
>> along x.
>> 
>> But even if all the molecules are shifted near the origin, the 3x3x3
>> cell is still not sufficient to find contacts.
>> See 3NWH – a homo-4-mer in P2 (4 x 2 chains per unit cell). Here it in
>> its unit cell, colored by the chain id:
>> https://gemmi.readthedocs.io/en/latest/_images/3nwh.png
>> Or 5XG2 – a monomer in P21. Two copies of the chain are rainbow-colored here:
>> https://gemmi.readthedocs.io/en/latest/_images/5xg2.png
>> These chains span over more than 4 unit cells in one direction. One
>> could use big enough supercell, but it'd be slow. I suppose that even
>> using a 3x3x3 supercell is slow. The alternative is to do the distance
>> calculation in fractional coordinates modulo 1.
>> 
>> Then you needs to consider atoms on special positions. If you apply
>> symmetry operations to an atom on a 4-fold symmetry axis you get 4
>> atoms in the same place. So this needs to be handled. The atom may not
>> be exactly on the axis, because the refinement program may not
>> constrain its position. So the symmetry operations should produce, I
>> think, 4 alternative locations of the same atom. But you could also
>> have an atom near the symmetry axis bonded to its symmetry mate - then
>> the symmetry operations should produce different atoms. So the
>> procedure requires a cut-off distance or a heuristics to distinguish
>> the two cases.
>> 
>> Then, if you'd like to expand non-crystallographic symmetry from the
>> MTRIX records - this is another complication. And so on...
>> 
>> So I'd recommend using one of many available programs for finding
>> contacts or interactions. If none of them is suitable - then try
>> crystallographic libraries.
>> I didn't document yet how to find the contacts using gemmi, but I'll
>> do it in the coming weeks (or months). Cctbx and clipper are other
>> (more mature) libraries worth checking.
>> 
>> Best wishes,
>> Marcin
>> 
>> 
>> On Sat, 11 Jan 2020 at 02:11, Zhijie Li <[email protected]> wrote:
>> >
>> > Hi Orly,
>> >
>> > REMARK 290 should be the easiest way for generating symmetry mates. Other 
>> > routes are just going to give you the same results. As Jonathan already 
>> > pointed out, the symm ops do not garantee that the symm copies are close 
>> > to each other.  The most simple-minded solution to this problem would be 
>> > simply generating 3x3x3 unit cells so that the unit cell in center will be 
>> > complete. An upgrade to this is to compute the center of mass of the 
>> > symmetry copies in each of the 3x3c3 cells and find which one is closest 
>> > to the orignal 1555 copy.  Just for fun, I wrote a little python script 
>> > that does this (attached). In this script for unit cell translation and 
>> > calculating center-center distances, I converted the Cartesian coordinates 
>> > to fractional coords first. Then after the translation,I used the inverse 
>> > of the SCALE1 matrix to get the shifted Cartesian coords. This way I don't 
>> > need to read wikipedia on geometry . But as noted in the script the 
>> > distances should better be calculated in Cartesian.
>> >
>> > Zhijie
>> >
>> > ________________________________
>> > From: CCP4 bulletin board <[email protected]> on behalf of orly 
>> > avraham <[email protected]>
>> > Sent: Friday, January 10, 2020 3:30 PM
>> > To: [email protected] <[email protected]>
>> > Subject: [ccp4bb] Generating symmetry mates using python
>> >
>> > Hi all,
>> >
>> > I am a crystallographer currently employing computational methods as well 
>> > as experimental crystallography.
>> > I am trying to generate symmetry mates in python (working with pandas 
>> > dataframes), in order to analyze inter-sub-unit interactions. To do so I 
>> > am trying to use the info in "REMARK 290 CRYSTALLOGRAPHIC SYMMETRY" and 
>> > manually (using numpy) perform a matrix multiplication with the relevant 
>> > translation (xyz*rotation + translation).
>> > For some reason this doesn't work consistently and I feel I need to use 
>> > the info in CRYST1 to obtain the unit cell and multiplication matrix. Here 
>> > I ran into trouble with extracting the correct symmetry operations based 
>> > on each space group. I found spglib but it doesn't quite solve the problem.
>> > I also tried opening PyMol through the command and generating symmetry 
>> > mates this way. It worked on a few files but failed quite quickly 
>> > (segmentation fault) and was also very slow.
>> > Can anyone suggest a useful solution, preferably clear to use and/or well 
>> > documented? Or even have a python script/code they can share for this?
>> >
>> > Best regards,
>> > Orly
>> >
>> > --
>> >
>> > Orly Avraham, Ph.D.
>> > Postdoctoral fellow
>> > The lab of Prof. Oded Livnah
>> > and the lab of Prof. Ora Schueler-Furman
>> > The Hebrew University of Jerusalem
>> > Israel
>> >
>> >
>> > ________________________________
>> >
>> > To unsubscribe from the CCP4BB list, click the following link:
>> > https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>> >
>> >
>> > ________________________________
>> >
>> > To unsubscribe from the CCP4BB list, click the following link:
>> > https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
>> 
>> ########################################################################
>> 
>> To unsubscribe from the CCP4BB list, click the following link:
>> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
> 
> 
> -- 
> 
> Orly Avraham, Ph.D.
> Postdoctoral fellow
> The lab of Prof. Oded Livnah
> and the lab of Prof. Ora Schueler-Furman
> The Hebrew University of Jerusalem
> Israel
> 
> 
> To unsubscribe from the CCP4BB list, click the following link:
> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1

########################################################################

To unsubscribe from the CCP4BB list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1

Reply via email to