<br><br>----- Original Message -----<br>From: Martin Kamp Jensen &lt;martin.kamp.jensen@gmail.com&gt;<br>Date: Friday, September 24, 2010 18:23<br>Subject: [gmx-developers] Interface - energy value from peptide conformation<br>To: gmx-developers@gromacs.org<br><br><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>Hello,<div><br></div><div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>I just started experimenting with GROMACS and I would like to interface with it to get energy values for different conformations of peptides. When debugging my way through the energy minimization part of the gmxdemo tutorial, I ended up in the following method of the mdlib/minimize.c file:</div> <div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font><br><div><div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>static void evaluate_energy(FILE *fplog,bool bVerbose,t_commrec *cr,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;t_state *state_global,gmx_mtop_t *top_global,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;em_state_t *ems,rvec **buf,gmx_localtop_t *top,</div> <div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;t_inputrec *inputrec,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;t_nrnb *nrnb,gmx_wallcycle_t wcycle,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;gmx_vsite_t *vsite,gmx_constr_t constr,</div> <div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;t_fcdata *fcd,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;t_graph *graph,t_mdatoms *mdatoms,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;t_forcerec *fr, rvec mu_tot,</div> <div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;gmx_enerdata_t *enerd,tensor vir,tensor pres,</div><div><span style="white-space: pre-wrap;"><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>                        </span>&nbsp;&nbsp; &nbsp;int count,bool bFirst)</div></div><div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font><br></div><div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>I'm not very experienced with C/C++, but the fact that this method is static means that I cannot just call it from another C program (or e.g. a Java program) without changing GROMACS. I guess a naive way would be setting up an energy minimization and just running one step, but that is a lot of overhead and not very clean.&nbsp;Do you have any pointers for me?</div> </div><div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font><br></div><div><font style="font-style: normal; font-weight: normal; background-color: rgb(245, 248, 240); font-size: 14px;">&gt; </font>(Actually, what I want to do is navigate the energy landscape of peptides by changing the torsion angles. This means that I will need to look up energy values very frequently.)<br><br>The elegant way to do that is to write your series of conformations to a pseudo-trajectory (in whichever of GROMACS many trajectory formats is convenient to you), and then invoke mdrun -rerun on that trajectory with a suitable .tpr. Then you either parse the .log file or the output .edr file for the energies. This should keep the overhead quite low.<br><br>Mark<br></div>