<div dir="ltr">Mark and Jeff,<div><br></div><div>Thanks. I really appreciated your comments.</div><div><br></div><div>Best regards,<br></div><div><br><div class="gmail_extra">--<br>Rodrigo Antonio Faccioli, Ph.D<br>Intelligent System in Structural Bioinformatics <br>
University of Sao Paulo - USP<br>Barao de Maua University<br>Curriculum Lattes - <a href="http://lattes.cnpq.br/1025157978990218" target="_blank">http://lattes.cnpq.br/1025157978990218</a><br>Public Profile - <a href="http://br.linkedin.com/pub/rodrigo-faccioli/7/589/a5" target="_blank">http://br.linkedin.com/pub/rodrigo-faccioli/7/589/a5</a><br>
Personal Blogg - <a href="http://rodrigofaccioli.blogspot.com/" target="_blank">http://rodrigofaccioli.blogspot.com/</a><br clear="all"><div><br></div><br><div class="gmail_quote">On Tue, Aug 27, 2013 at 9:48 AM, Mark Abraham <span dir="ltr">&lt;<a href="mailto:mark.j.abraham@gmail.com" target="_blank">mark.j.abraham@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Fri, Aug 23, 2013 at 4:41 PM, Rodrigo Faccioli<br>

&lt;<a href="mailto:rodrigo_faccioli@uol.com.br">rodrigo_faccioli@uol.com.br</a>&gt; wrote:<br>
&gt; Hi Mark,<br>
&gt;<br>
&gt; Thanks your answer.<br>
&gt;<br>
&gt; We are glad to contribute with Gromacs. We would like to try to do it.<br>
<br>
</div>Great - but welcome to an uphill battle! :-)<br>
<div class="im"><br>
&gt; What do you suggest for us about rules to contribute with Gromacs?<br>
<br>
</div>Tough one. Anything new should only consider master branch, and be<br>
prepared for considerable volatility in the core of mdrun over the<br>
next few months. And the 5.0 beta will be out December 1 ;-) Work not<br>
done in time for due process for that beta date won&#39;t go in 5.0. I<br>
don&#39;t care how many Nobel Prizes you have!<br>
<br>
We&#39;re currently feeling our way through the C++ transition, without<br>
having done much changing of code yet. The coding guidelines you can<br>
find on the web are pretty accurate. We&#39;re using at C++98 plus a<br>
little bit of Boost for a bit better support for smart pointers and<br>
exceptions (see src/external/boost/boost). Feel free to use virtual<br>
functions and templates when they add value, but make sure you know<br>
what that value is! Acceptable coding style is pretty much as you see<br>
master branch now - files with .cpp extension are a good guide to how<br>
we expect written-as-C++ code to look and work and be documented with<br>
Doxygen. But if stuff still in C has to be changed, do your best to<br>
conform with the code around it. There&#39;s a code beautification<br>
solution implemented with a custom version of uncrustify. Ask if that<br>
becomes an issue.<br>
<div class="im"><br>
&gt; I have read in Developers zone at Gromacs site about Gerrit and Git. It is<br>
&gt; the best way?<br>
<br>
</div>Yeah, that&#39;s the best there is. I&#39;d like to write a better developer&#39;s<br>
manual, but I don&#39;t have time to do so. Might have some once the beta<br>
is out ;-)<br>
<br>
On mechanics, what Jeff said is pretty accurate. If you just want to<br>
leap in and fix something, then with a registered OpenID you can<br>
upload a patch directly to Gerrit. You would probably want to discuss<br>
your proposition here or on a suitable Redmine issue first.<br>
Development is somewhat distributed and discussions fairly open,<br>
except that there is a core team of people here in Stockholm &amp; Uppsala<br>
who do run some tighter communication loops.<br>
<br>
&gt;From the above, I&#39;m guessing the workflow you are trying to streamline<br>
is &quot;decide on the kind of child GROMACS calculation you want to run,<br>
set that up, and run that.&quot; So, constructing an .mdp, calling grompp,<br>
and calling mdrun. That could be streamlined in two ways:<br>
* structuring grompp so that you could call a function with a string<br>
containing your &quot;.mdp file,&quot; and<br>
* structuring the new gmx executable so that one could call something<br>
like &quot;gmx grompp -f foo -c bar -p fizz -end mdrun -np 16 -rerun<br>
whatever&quot; and have that idiom skip writing and reading the .tpr file<br>
Both of those seem to me reasonably solvable problems that will be<br>
pretty orthogonal to other things that are going on, if someone (you!)<br>
is keen to prioritise them.<br>
<br>
Neither case is going to fix needing to call GROMACS in a sub-process,<br>
rather than as a true library call, because the assumption that we can<br>
exit from a fatal error is everywhere. grompp and mdrun feel free to<br>
issue fatal errors any time there&#39;s an unrecoverable problem (e.g.<br>
broken input, or valid input leading to a broken simulation). There<br>
are wrapper functions like gmx_fatal() that issue the actual fatal<br>
errors, so there is a decent chance for solving that problem.<br>
Obviously, throwing an exception in gmx_fatal() and catching it very<br>
close to the end of main() could be made to work. However, we would be<br>
concerned about any run-time cost from an exception that could be<br>
thrown from inside the main MD loop. I&#39;m no expert on how compilers<br>
implement exception handling these days, but we&#39;d have to be very<br>
confident that normal execution would be unaffected on (at least)<br>
recent gcc, icc, clang, MSVC (and we&#39;d test various other HPC<br>
compilers, too).<br>
<br>
Cheers,<br>
<br>
Mark<br>
<div class=""><div class="h5"><br>
&gt; Best regards,<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Rodrigo Antonio Faccioli<br>
&gt; Ph.D Student in Electrical Engineering<br>
&gt;<br>
&gt; University of Sao Paulo - USP<br>
&gt; Engineering School of Sao Carlos - EESC<br>
&gt; Department of Electrical Engineering - SEL<br>
&gt; Intelligent System in Structure Bioinformatics<br>
&gt; <a href="http://laips.sel.eesc.usp.br" target="_blank">http://laips.sel.eesc.usp.br</a><br>
&gt; Phone: 55 (16) 3373-9366 Ext 229<br>
&gt;<br>
&gt; Curriculum Lattes - <a href="http://lattes.cnpq.br/1025157978990218" target="_blank">http://lattes.cnpq.br/1025157978990218</a><br>
&gt; Public Profile - <a href="http://br.linkedin.com/pub/rodrigo-faccioli/7/589/a5" target="_blank">http://br.linkedin.com/pub/rodrigo-faccioli/7/589/a5</a><br>
&gt;<br>
&gt;<br>
&gt; On Wed, Aug 21, 2013 at 5:04 AM, Mark Abraham &lt;<a href="mailto:mark.j.abraham@gmail.com">mark.j.abraham@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; Thanks for your interest. Unfortunately, there&#39;s never really been a<br>
&gt;&gt; callable API for GROMACS. The core team has always prioritized higher<br>
&gt;&gt; performance and new features over facilitating third-party code re-use<br>
&gt;&gt; - manpower resources are limiting. There&#39;s hope we can improve this in<br>
&gt;&gt; the future during the C++ transition... e.g.<br>
&gt;&gt; <a href="http://redmine.gromacs.org/issues/988" target="_blank">http://redmine.gromacs.org/issues/988</a>,<br>
&gt;&gt; <a href="http://redmine.gromacs.org/issues/1140" target="_blank">http://redmine.gromacs.org/issues/1140</a>.<br>
&gt;&gt;<br>
&gt;&gt; In particular, <a href="http://redmine.gromacs.org/issues/1170" target="_blank">http://redmine.gromacs.org/issues/1170</a> suggests being<br>
&gt;&gt; able to remove the &quot;middle man&quot; of writing a .tpr file. It sounds like<br>
&gt;&gt; your use case would be streamlined a lot if it were possible to pass<br>
&gt;&gt; &quot;grompp&quot; whatever inputs are easily constructed by your code, and the<br>
&gt;&gt; output of &quot;grompp&quot; are data structures ready for &quot;mdrun.&quot; mdrun in 5.0<br>
&gt;&gt; might support this already, which would be useful for you, but not yet<br>
&gt;&gt; ideal.<br>
&gt;&gt;<br>
&gt;&gt; If you&#39;d like to contribute, that would be fantastic. A sketch in<br>
&gt;&gt; <a href="http://redmine.gromacs.org/issues/1140" target="_blank">http://redmine.gromacs.org/issues/1140</a> of a series of hypothetical<br>
&gt;&gt; function calls you&#39;d like to make in order to execute your workflow<br>
&gt;&gt; would be a great start. Having an external need described should help<br>
&gt;&gt; us prioritise what we can do.<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt; Mark<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Aug 20, 2013 at 9:04 PM, Rodrigo Faccioli<br>
&gt;&gt; &lt;<a href="mailto:rodrigo_faccioli@uol.com.br">rodrigo_faccioli@uol.com.br</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi Gromacs Developers,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; We have worked in a framework that uses Evolutionary Algorithms (EA)<br>
&gt;&gt; &gt; with<br>
&gt;&gt; &gt; GROMACS. This frameword is called ProtPred-Gromacs (2PG) [1].<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; In general lines, GROMACS is used to compute the objetives of individual<br>
&gt;&gt; &gt; (protein conformation). Potential, Van der Waals, Electrostatic, GBSA<br>
&gt;&gt; &gt; Solvatation, Hydrophobic, Hydrophilic, Gyrate and Hydrogen Bonds are<br>
&gt;&gt; &gt; examples of objetives.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Nowadays, those objetives are computed by scripts that calls the<br>
&gt;&gt; &gt; respective<br>
&gt;&gt; &gt; GROMACS program for each objective.  I call a system command and load<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; GROMACS program output into my structure.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I would like to know a way that is possible to remove those scripts. I<br>
&gt;&gt; &gt; have<br>
&gt;&gt; &gt; read about C++ transition at GROMACS page [2]. However, I could not<br>
&gt;&gt; &gt; understand how I can use it in my project.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Therefore, I would like to ask some examples, tips or any other comments<br>
&gt;&gt; &gt; about a way to remove the scripts and I get the objetives with more<br>
&gt;&gt; &gt; performance.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; [1] <a href="http://lcrserver.icmc.usp.br/projects/2pg" target="_blank">http://lcrserver.icmc.usp.br/projects/2pg</a><br>
&gt;&gt; &gt; [2]<br>
&gt;&gt; &gt; <a href="http://www.gromacs.org/index.php?title=Developer_Zone/C%2b%2b_Transition" target="_blank">http://www.gromacs.org/index.php?title=Developer_Zone/C%2b%2b_Transition</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Best regards,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Rodrigo Antonio Faccioli, Ph.D<br>
&gt;&gt; &gt; Intelligent System in Structural Bioinformatics<br>
&gt;&gt; &gt; University of Sao Paulo - USP<br>
&gt;&gt; &gt; Barao de Maua University<br>
&gt;&gt; &gt; Curriculum Lattes - <a href="http://lattes.cnpq.br/1025157978990218" target="_blank">http://lattes.cnpq.br/1025157978990218</a><br>
&gt;&gt; &gt; Public Profile - <a href="http://br.linkedin.com/pub/rodrigo-faccioli/7/589/a5" target="_blank">http://br.linkedin.com/pub/rodrigo-faccioli/7/589/a5</a><br>
&gt;&gt; &gt; Personal Blogg - <a href="http://rodrigofaccioli.blogspot.com/" target="_blank">http://rodrigofaccioli.blogspot.com/</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; gmx-developers mailing list<br>
&gt;&gt; &gt; <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
&gt;&gt; &gt; <a href="http://lists.gromacs.org/mailman/listinfo/gmx-developers" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-developers</a><br>
&gt;&gt; &gt; Please don&#39;t post (un)subscribe requests to the list. Use the<br>
&gt;&gt; &gt; www interface or send it to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
&gt;&gt; --<br>
&gt;&gt; gmx-developers mailing list<br>
&gt;&gt; <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
&gt;&gt; <a href="http://lists.gromacs.org/mailman/listinfo/gmx-developers" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-developers</a><br>
&gt;&gt; Please don&#39;t post (un)subscribe requests to the list. Use the<br>
&gt;&gt; www interface or send it to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; gmx-developers mailing list<br>
&gt; <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
&gt; <a href="http://lists.gromacs.org/mailman/listinfo/gmx-developers" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-developers</a><br>
&gt; Please don&#39;t post (un)subscribe requests to the list. Use the<br>
&gt; www interface or send it to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
--<br>
gmx-developers mailing list<br>
<a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
<a href="http://lists.gromacs.org/mailman/listinfo/gmx-developers" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-developers</a><br>
Please don&#39;t post (un)subscribe requests to the list. Use the<br>
www interface or send it to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
</div></div></blockquote></div><br></div></div></div>