Dear Shane,

It's not CCP4, but Tom Terwilliger's find_ncs program works conveniently.  Like 
coot, it's only returning 4 decimal places, if that's a problem (though adding 
a 5th decimal place would only typically change the result of a rotation by 
hundredths of an Angstrom).  I've just tried it:

phenix.find_ncs 1bos.pdb

returns a file called find_ncs.ncs_spec, with information like the following:

rota_matrix    0.3223    0.7547   -0.5714
rota_matrix   -0.7282    0.5833    0.3597
rota_matrix    0.6048    0.3002    0.7376
tran_orth    -2.1022   47.6880  -37.6220

center_orth   24.4889   44.5171    9.8888

Best wishes,

Randy Read

> On 15 Apr 2015, at 17:21, Shane Caldwell <[email protected]> wrote:
> 
> good enough to pass the orthonormal test.
> 
> .. scratch that, it passes sometimes and still fails for other 
> structures/chains. So I'm still in search of a higher-precision export
> 
> Shane 
> 
> On Wed, Apr 15, 2015 at 11:44 AM, Shane Caldwell <[email protected] 
> <mailto:[email protected]>> wrote:
> Hi Bernhard, thanks for the pointer. It looks like most of the coot ncs 
> functions don't print the matrix values, which made exporting them tricky, 
> especially because I'm pretty new to scripting in Python. 
> 
> I have 4 chains, and 
> ncs_ghosts(0) just spits out 
> 
> result is [['NCS found from matching Chain B onto Chain A', 'B', 'A', False, 
> False], ['NCS found from matching Chain C onto Chain A', 'C', 'A', False, 
> False], ['NCS found from matching Chain D onto Chain A', 'D', 'A', False, 
> False]]
> 
> However, after playing around, I was able to extract the matrix from coot 
> using single_manual_ncs_ghosts, and while it's still at only limited 
> precision, it's good enough to pass the orthonormal test. 
> 
> Running coot > coot.log and then running the python:
> 
> single_manual_ncs_ghosts(0,start,end,"A","B")
> 
> where start and end were my residue numbers, wrote out :
> 
> INFO:: coordinates transformed by orthonal matrix: 
> |   0.07272,    0.9909,   -0.1131|
> |    0.9973,  -0.07361, -0.003729|
> |  -0.01202,   -0.1125,   -0.9936|
> (     41.44,    -39.63,     77.24)
> INFO:: fractional coordinates matrix:
> |   0.06948,     1.063,   -0.4001|
> |    0.9013,  -0.07361,   -0.2467|
> |    -0.012,   -0.1243,   -0.9903|
> (    0.6896,   -0.3967,    0.8545)
> 
> Which is good enough for now, though it does feel like repairing the dining 
> room chair with duct tape. If anyone knows a cleaner way to get these values, 
> It'd be great to know!
> 
> Shane
> 
> On Wed, Apr 8, 2015 at 6:08 AM, B.Lohkamp <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> Just for completeness, of course (!?) you can get something like this in 
> Coot. In terms of return value and accuracy (>>3 digits) I would use the 
> scripting function:
> 
> ncs_ghosts(imol)      - pythonic
> 
> (ncs-ghosts imol)      - schemey
> 
> imol - your protein with NCS
> 
> 
> Bernhard
> 
> Alright, thanks! It's a good thing, then, I spent the afternoon brushing
> up on matrices.
> 
> I guess the next, probably more general question for the bb is: which
> utilities export an NCS transformation matrix with more precision?
> *superpose* and *gesamt* only export three decimals, though I'm sure
> they use greater precision under the hood. I'm not opposed to exporting
> from coot or pymol either, I just haven't figured out how to do this yet
> - what would be the simplest way to calculate and export an NCS
> transformation matrix?
> 
> Shane
> 
> On Wed, Apr 1, 2015 at 7:34 PM, Dale Tronrud <[email protected] 
> <mailto:[email protected]>
> <mailto:[email protected] <mailto:[email protected]>>> wrote:
> 
> 
>         I think you are on the right track - There are not enough decimal
>     points in your matrix elements to pass the orthonormal test.  This test
>     checks that the length of each row (x^2+y^2+z^2) is equal to one and the
>     dot product of each row with every other row is equal to zero.  If the
>     values on your NCS statement are in row order I calculate 0.999337 for
>     the length of the first row.  If the program is testing if this is equal
>     to one to four decimal points you lose.
> 
>         You have to add more digits, but just adding zeros isn't going to
>     accomplish much.  The best solution is to get your ncs program to report
>     its matrix with more digits -- three is pitiful.  Failing that you could
>     calculate one element of each row from the other two to ensure the
>     length is equal to one at a higher level of precision and hope this
>     doesn't mess up the dot product test.  You'll end up with one number in
>     each row having more than three decimal places.
> 
>     Dale Tronrud
> 
>     On 4/1/2015 2:52 PM, Shane Caldwell wrote:
>     > Hi ccp4bb,
>     >
>     > I'm trying to solve a problem I never quite figured out in the past. I'd
>      > like to use the *sortwater* utility to send my picked waters to
>     various
>     > protein chains, and to give them the same residue number if they are
>     > NCS-equivalent, as the manual outlines.
>     >
>     >http://www.ccp4.ac.uk/html/sortwater.html 
> <http://www.ccp4.ac.uk/html/sortwater.html>
>     >
>     > The first part goes off perfectly, partitioning the waters into their
>     > respective chains. Where I run into problems is bringing in NCS. I can't
>     > get the program to recognize the transformation matrix. I can calculate
>      > the matrix using *superpose*, and manually input these (limited
>     > precision) values into my script, which looks like:
>     >
>     > NCS B C MATRIX 0.072 0.997 -0.012 0.991 -0.073 -0.113 -0.113 -0.004
>     > -0.994 37.502 -35.283 81.276 <tel:35.283%2081.276>
>     >
>     > and it returns
>     >
>     >  WARNING:  **** Matrix is not orthonormal ****
>     >
>     >
>     > My linear algebra is very limited, and I don't know exactly what this
>     > means in the context of this program, though I suspect it could be
>     > either linked to converting to fractional coordinates (I'm in a
>     > monoclinic system), or a product of the limited precision of the matrix
>     > values.
>     >
>     > Using the identity matrix, like so:
>     >
>     > NCS B C MATRIX 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000
>     > 0.00000 1.00000 0.000 0.000 0.000
>     >
>     > doesn't trigger the warning. These values have more digits, but adding
>     > extra zeroes to the original matrix as a very crude workaround still
>     > returns the error.
>     >
>      > So, I'm now stuck trying to parse what's going on. I know *sortwater*
>      > also takes O datablocks as matrix input, and that's something I could
>      > look into (especially if calculating in a different program might
>     get me
>      > better precision). Although, I'm not sure the format is a factor
>     given
>      > the identity matrix is accepted as a keyword input.
>      >
>      > Skimming the archives, I get the sense this isn't something that many
>      > users do any more. I have quite a few structures with hundreds of
>     waters
>      > each and I'd like to get the waters organized, but doing it by
>     hand will
>      > take a very long time. Any help getting this program running would be
>      > greatly appreciated!
>      >
>      >
>      > Shane Caldwell
>      > McGill University
> 
> 
> 
> 
> 
> ---
> This email has been checked for viruses by Avast antivirus software.
> http://www.avast.com <http://www.avast.com/>
> 
> 
> 

------
Randy J. Read
Department of Haematology, University of Cambridge
Cambridge Institute for Medical Research      Tel: + 44 1223 336500
Wellcome Trust/MRC Building                   Fax: + 44 1223 336827
Hills Road                                    E-mail: [email protected]
Cambridge CB2 0XY, U.K.                       www-structmed.cimr.cam.ac.uk

Reply via email to