<div dir="ltr">Thanks Steve. It's very peculiar to me that CP2K would write out the PDB files without aligning the axes as per the normal convention; I think there's probably a lot of people that are doing what I did, i.e., assuming that the convention is being followed and that the output can be converted to other file formats using tools such as openbabel and pwtools. I'm sure the CP2K developers have a good reason for having chosen to do this, such as FX's point that it makes for better visualization. In that case, it might be a good idea to include a sentence in the documentation that the printed trajectory is for visualization purposes only. Otherwise, one needs to hope that the user will have read this thread to know how to use the output properly (I only knew about this because a CP2K user in my group expressly warned me against using the printed trajectory and pointed me to this thread).<br><br>On Saturday, August 26, 2017 at 7:10:47 PM UTC+2, Steve Schmerler wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On Aug 02 04:43 -0700, Efrem Braun wrote:
<br>> Similar question applies when using pwtools. io.write_cif is happy to write 
<br>> a cif file in fractional coordinates given a CP2K output pdb, but is it 
<br>> assuming that CP2K was writing the pdb using a convention that CP2K isn't 
<br>> using?
<br>
<br>Hi Efrem
<br>
<br>Sorry for being late on this topic. I just stumbled across your mail
<br>mentioning pwtools, so I'd like to answer your question.
<br>
<br>pwtools.io.read_pdb() uses pwtools.parse.PDBFile [1] which is a *very
<br>very* basic parser that only extracts cartesian coordinates (ATOM
<br>record), cell parameters (CRYST1 record) and atom symbols. It doesn't
<br>care where the PDB file comes from, so it doesn't assume any
<br>CP2K-specific information [*]. I haven't used CP2K's PDB output, so I
<br>don't know if there is any additional information that may get ignored.
<br>
<br>pwtools calculates the cell matrix using the same convention [2] that
<br>Matthias mentioned in this thread some time ago (a along x, b in x-y
<br>plane). Therefore the cell matrix of the Structure object (st.cell from
<br>st=pwtools.io.read_pdb('foo.<wbr>pdb')) is aligned as described. For
<br>instance:
<br>
<br>        In [9]: from pwtools import io as pwio
<br>        In [10]: st=pwio.read_pdb('pwtools/<wbr>test/files/pdb_struct.pdb')
<br>        In [11]: st.cryst_const
<br>        Out[11]: array([ 10.678,  10.678,  10.678,  90.   ,  90.   ,  90.   ])
<br>        In [12]: st.cell
<br>        Out[12]: 
<br>        array([[  1.06780000e+01,   0.00000000e+00,   0.00000000e+00],
<br>                   [  6.53838926e-16,   1.06780000e+01,   0.00000000e+00],
<br>                   [  6.53838926e-16,   6.53838926e-16,   1.06780000e+01]])
<br>
<br>
<br>If you have only cell parameters a,b,c,alpha,beta,gamma as in PDB or CIF
<br>files, then there is no other way of calculating the cell, i.e. you need
<br>to specify an orientation of the cell. This is why you get in trouble if
<br>you only have cartesian atom coordinates and cell parameters available
<br>and if the cartesian coordinates don't match (are not aligned with) the
<br>cell calculated using the above convention (or any convention for that
<br>matter). In that case, you are out of luck. In particular, the PDB
<br>parser has no way of inferring whether the cartesian coordinates are
<br>aligned.
<br>
<br>If using DCD, you can use DCD_ALIGNED_CELL in a new calculation as
<br>mentioned. What you can also do is let CP2K write .cell text files
<br>which, IIRC, contain the cell vectors in Angstrom. Along with the XYZ
<br>files of cartesian atom coordinates, you can then calculate fractional
<br>coordinates from that. See [3] for how this is done in pwtools. If you
<br>find any errors, please let me know! :) In general, I'd write fractional
<br>coordinates whenever possible and avoid formats such as PDB. However,
<br>last time I checked, CP2K has no option to write fractional coordinates
<br>(I may be wrong, I haven't used it for a while).
<br>
<br>[1] <a href="https://github.com/elcorto/pwtools/blob/master/parse.py#L441" target="_blank" rel="nofollow" onmousedown="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Felcorto%2Fpwtools%2Fblob%2Fmaster%2Fparse.py%23L441\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFaWNMD-oJa7lDHjB_SAQ_Rzs0teQ';return true;" onclick="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Felcorto%2Fpwtools%2Fblob%2Fmaster%2Fparse.py%23L441\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFaWNMD-oJa7lDHjB_SAQ_Rzs0teQ';return true;">https://github.com/elcorto/<wbr>pwtools/blob/master/parse.py#<wbr>L441</a>
<br>[2] <a href="https://github.com/elcorto/pwtools/blob/master/crys.py#L190" target="_blank" rel="nofollow" onmousedown="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Felcorto%2Fpwtools%2Fblob%2Fmaster%2Fcrys.py%23L190\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGWJ7Y67R8r0zOKVQT-3zNrfaegvQ';return true;" onclick="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Felcorto%2Fpwtools%2Fblob%2Fmaster%2Fcrys.py%23L190\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGWJ7Y67R8r0zOKVQT-3zNrfaegvQ';return true;">https://github.com/elcorto/<wbr>pwtools/blob/master/crys.py#<wbr>L190</a>
<br>[3] <a href="http://elcorto.github.io/pwtools/written/background/coord_trans.html" target="_blank" rel="nofollow" onmousedown="this.href='http://www.google.com/url?q\x3dhttp%3A%2F%2Felcorto.github.io%2Fpwtools%2Fwritten%2Fbackground%2Fcoord_trans.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHWPr2O7Ddtc_yLKQ4UymcIM52xxA';return true;" onclick="this.href='http://www.google.com/url?q\x3dhttp%3A%2F%2Felcorto.github.io%2Fpwtools%2Fwritten%2Fbackground%2Fcoord_trans.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHWPr2O7Ddtc_yLKQ4UymcIM52xxA';return true;">http://elcorto.github.io/<wbr>pwtools/written/background/<wbr>coord_trans.html</a>
<br>
<br>[*] pwtools is in no way affiliated with the CP2K project, even though it
<br>    can parse CP2K output and is linked from the CP2K wiki :)
<br>
<br>best,
<br>Steve
<br></blockquote></div>