<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I don’t know a lot about scipy.optimize, but I do have some experience with Fortran/Python interfaces. It seems that f2py essentially treats Fortran code as a black box, and won’t tell you much about what goes on inside. This makes debugging Fortran code being called from Python extremely painful. I imagine that what the PR is describing here is something like this:<div class=""><br class=""></div><div class="">Python calls a Fortran library. The library expects to receive a function, which Python provides. This function is coded in Python, and wrapped in an interface that allows to Fortran code to recognize and call it (a Python call-back). </div><div class=""><br class=""></div><div class="">The Python call-back function contains some error-handling code that raises exceptions under certain conditions. Unfortunately, the Fortran library does not recognize exceptions nor understand what to do with them. The user cannot handle them in the calling code, because the Fortran library is in the middle, and it does not have an interface that can handle exceptions. The upshot of all this is, you have to assume that both the call-back function and the Fortran library are behaving themselves at all times, because the only part of the code the user can really see is the Python calling program. You can sort-of get around this by having the Fortran library and the call-back function return some kind of integer flag to represent certain failure modes, and this is done in a lot of old libraries, but AFAIK there’s no clean, self-documenting way to do it. Hopefully, this is helpful for #1. </div><div class=""><br class=""></div><div class="">I’m afraid I can’t help much on items 2-4. </div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 28, 2015, at 11:04 AM, Nikolay Mayorov <<a href="mailto:n59_ru@hotmail.com" class="">n59_ru@hotmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">

<style class=""><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style>
<div class="hmmessage"><div dir="ltr" class="">Hi! I want to clarify some things about GSOC project idea related to <span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class="">Levenberg-Marquardt algorithm.</span><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class="">1) Why do we want anything but current leastsq based on MINPACK?</span></div><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><font color="#333333" face="Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif" class=""><span style="line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class="">Looks like it is answered here: </span></font><a href="https://github.com/scipy/scipy/pull/90" target="_blank" style="font-size: 12pt;" class="">https://github.com/scipy/scipy/pull/90</a> </div><div class=""><br class=""></div><div class="">"W<span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">hen we </span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">call python from FORTRAN, a lot of magic has to </span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">be done. This magic prevents us, for example, to </span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">properly pass exceptions through the FORTRAN</span></div><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">code."</span><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class="">Could you comment more on that perhaps?</span></div><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 25.6000003814697px; background-color: rgb(255, 255, 255);" class="">2) What's wrong with </span><a href="https://github.com/scipy/scipy/pull/90" target="_blank" style="font-size: 12pt;" class="">https://github.com/scipy/scipy/pull/90</a>? Why it is stalled? What do you expect from GSOC student to do better / different?</div><div class=""><br class=""></div><div class="">Again partially answered in PR: "<span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">It's stalled: the algorithmic part is OK, the new interfaces proposed controversial.", "</span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">However, this could perhaps be extended to Levenberg-Marquardt supporting sparse Jacobians</span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; font-size: 14px; line-height: 22.3999996185303px; background-color: rgb(255, 255, 255);" class="">"</span></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">3) Based on 2: how GSOC student should proceed with interface issue? I mean there weren't any strong opinions and it was on the list for so long. I have no idea how to come up with a good solution all of a sudden.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">4) Do you believe that code written during GSOC should be based on PR mentioned?</div><div class=""><br class=""></div><div class="">---</div><div class=""><br class=""></div><div class="">That's what I come up so far about the work during GSOC:</div><div class=""><br class=""></div><div class="">- Decide on interface part</div><div class="">- Add new features to the PR from pv (probably just one of them): </div><div class="">   Sparse Jacobians support</div><div class="">   Constraints support</div><div class="">- Implement a solid test suite</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">---</div><div class=""><br class=""></div><div class="">I would appreciate your answers,</div><div class=""><br class=""></div><div class="">Nikolay.</div><div class=""><br class=""></div><div class=""><br class=""></div>                                      </div></div>
_______________________________________________<br class="">SciPy-Dev mailing list<br class=""><a href="mailto:SciPy-Dev@scipy.org" class="">SciPy-Dev@scipy.org</a><br class="">http://mail.scipy.org/mailman/listinfo/scipy-dev<br class=""></div></blockquote></div><br class=""></div></body></html>