<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>All,</div><div><br></div><div>I'm trying to figure out why a pdb input to pdb2gmx results in coordinates that are scaled by a factor of 0.1. That is, if a line in the PDB file reads</div><div><br></div><div><br></div><div><font class="Apple-style-span" face="Courier">ATOM &nbsp; &nbsp; &nbsp;1 &nbsp;N &nbsp; ALA B &nbsp; 3 &nbsp; &nbsp; &nbsp;-1.221 &nbsp;20.481 &nbsp;12.450 &nbsp;1.00 34.64 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N</font></div><div><br></div><div>then the corresponding line in the .gro file reads&nbsp;</div><div><br></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">&nbsp;3ALA &nbsp; &nbsp; &nbsp;N &nbsp; &nbsp;1 &nbsp;-0.122 &nbsp; 2.048 &nbsp; 1.245</font></div><div><br></div><div>The culprit seems to be the following lines in <font class="Apple-style-span" face="Courier">pdbio.c:</font></div><div><br></div><div><div><font class="Apple-style-span" face="Courier">static int read_atom(t_symtab *symtab,</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">                </span> &nbsp; &nbsp; char line[],int type,int natom,</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">                </span> &nbsp; &nbsp; t_atoms *atoms,rvec x[],int chainnum,gmx_bool bChange)</font></div></div><div><font class="Apple-style-span" face="Courier">{</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">// do stuff</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><div><font class="Apple-style-span" face="Courier">&nbsp;x[natom][XX]=strtod(xc,NULL)*0.1; /*all coordinates scaled by 0.1... why?*/</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; x[natom][YY]=strtod(yc,NULL)*0.1;</font></div><div><font class="Apple-style-span" face="Courier">&nbsp;&nbsp;x[natom][ZZ]=strtod(zc,NULL)*0.1;</font></div></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">//do &nbsp;more stuff</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">}</font></div><div><br></div><div><br></div><div>There's also a line in the output function that multiplies all incoming coordinates by 10 before writing it to output:</div><div><br></div><div><div><font class="Apple-style-span" face="Courier">void write_pdbfile_indexed(FILE *out,const char *title,</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">                        </span> &nbsp; t_atoms *atoms,rvec x[],</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">                        </span> &nbsp; int ePBC,matrix box,char chainid,</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">                        </span> &nbsp; int model_nr, atom_id nindex, atom_id index[],</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">                        </span> &nbsp; gmx_conect conect, gmx_bool bTerSepChains)</font></div></div><div><font class="Apple-style-span" face="Courier">{</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">//do stuff...</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><div><font class="Apple-style-span" face="Courier">fprintf(out,pdbform,pdbtp[type],(i+1)%100000,nm,resnm,ch,resnr,</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp; &nbsp;(resic == '\0') ? ' ' : resic,</font></div><div><font class="Apple-style-span" face="Courier"><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp; &nbsp;10*x[i][XX],10*x[i][YY],10*x[i][ZZ],occup,bfac,atoms-&gt;atom[i].elem);</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;&nbsp;</font></div></div><div><font class="Apple-style-span" face="Courier">// do more stuff...</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">}</font></div><div><br></div><div><br></div><div>Can someone tell me why this coordinate scaling occurs? &nbsp;And why the scale factor is a single hard-coded number than, say, something that depends on the input?</div><div><br></div><br><div apple-content-edited="true">
<div>Radhakrishna Bettadapura</div><div>PhD candidate,</div><div>Dept. of Mechanical Engineering/Computational Visualization Center,</div><div>University of Texas at Austin</div><div><a href="http://users.ices.utexas.edu/~brrk">http://users.ices.utexas.edu/~brrk</a></div>
</div>
<br></body></html>