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 > >