Print

Print


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 <[log in to unmask]
> 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 <
> [log in to unmask]> 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 <[log in to unmask]> 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 <[log in to unmask]
>>>> <mailto:[log in to unmask]>> 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
>>>
>>>
>>
>