Hi again ccp4bb. Thanks for your help and sorry for the spam! I've chased down the variables and figured out how to export them as full floats with a simple print command. I'll put together a script for anyone who wants to do so in the future.
Cheers, Shane On Wed, Apr 15, 2015 at 12:21 PM, Shane Caldwell <shane.caldwel...@gmail.com > 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 < > shane.caldwel...@gmail.com> 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 <b.lohk...@gmail.com> 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 <de...@daletronrud.com >>>> <mailto:de...@daletronrud.com>> 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 >>>> > >>>> > 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 >>>> > >>>> > 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 >>> >>> >> >