<div dir="ltr">Hi Adil,<div><br></div><div>Replies below.<br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 7, 2017 at 6:50 AM, Adil Iqbal <span dir="ltr"><<a href="mailto:aiqbal85@gmail.com" target="_blank">aiqbal85@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">​Hello all,</div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><b>TL:DR - Neural Network module is out of date. Also, I'm having an issue with the unit test for the "testseq" function. </b></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Just a quick question about the Neural Network module. The module seems just a bit out of date. It only has one available activation function and it's located in <b><a href="http://biopython.org/DIST/docs/api/Bio.NeuralNetwork.BackPropagation.Layer-pysrc.html" target="_blank">the BackPropagation.Layer module</a></b> for some reason.</div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><img src="cid:ii_15c80f1c42faa965" alt="Inline image 2" width="454" height="101"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Machine learning research is progressed pretty far, and no one is really using the logistic function as much anymore. The big thing now, especially for hidden layers is ReLU, or at the very least TanH, both of which are no where to be found in the code. That's not to say that the logistic function shouldn't be included, but it should definitely not be the only option. The binary step function should also definitely be included - if only for output layers.</div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Really, there should be a module <i>just</i> for activation functions. <a href="https://en.wikipedia.org/wiki/Activation_function#Comparison_of_activation_functions" target="_blank"><b>And it should include all of them.</b></a></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">It's not that difficult, its really just a matter of plugging an argument into a mathematical formula and returning the result. It might be prudent to have an "Activation" class with each of the activation formulas as a method of the class. Though, the backprop code would have to refactored to account for that.</div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Anyways, just a thought. I'd love to participate on that project, though it would have to be a community effort. </div></div></blockquote><div><br></div><div><br></div><div>Currently the Bio.NeuralNetwork module is not under active development, so you could perhaps take over this role? Alternatively, if you are familiar with the current state-of-the-art, there may be a much more mature Python library in this area we could recommend instead, and deprecate and later remove Bio.NeuralNetwork from Biopython?</div><div><br></div><div><a href="https://github.com/biopython/biopython/tree/master/Bio/NeuralNetwork">https://github.com/biopython/biopython/tree/master/Bio/NeuralNetwork</a><br></div><div><br></div><div>Other than style and compatibility updates, it does not seem to have been changed meaningfully from the first commit by Brad Chapman back in 2001,</div><div><br></div><div><a href="https://github.com/biopython/biopython/commit/8641712c2c648dbb28230a08eab1f525f465d2e8">https://github.com/biopython/biopython/commit/8641712c2c648dbb28230a08eab1f525f465d2e8</a><br></div><div><br></div><div>Brad - did you write this or was it a contribution from someone else? The headers do not have any copyright statements.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">I've also written a <b><a href="https://github.com/Adil-Iqbal/biopython/blob/master/Tests/test_testseq.py" target="_blank">unit test for the testseq function</a></b> called test_testseq.py. However, it is failing the Travis CI tests because it is unable to import testseq.py from the Scripts directory. I attempted using both relative and absolute imports (<a href="https://www.python.org/dev/peps/pep-0328/" target="_blank"><b>PEP328</b></a>) but that did not work. I am actively looking for a solution, though I would appreciate any advice you guys could give me. (A pull request might be more efficient way clue me in than actually explaining the concept.)</div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div></div></blockquote><div><br></div><div><br></div><div>Right now none of the Scripts/*.py or Doc/examples/*.py are checked from our main test suite. That is a project worth thinking about.</div><div><br></div><div>One solution could be to write Scripts/some_file.py with a __main__ if statement so that it can be run and tested at the command line using:</div><div><br></div><div>$ python Scripts/some_file.py</div><div><br></div><div>If you do that, then your Tests/test_some_script.py could call this in a similar way via subprocess?</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Also, I've finalized the code for testseq. The seeding worked perfectly, but it was acting too much like a method and not enough like an argument. I had some of my younger cousins use it and they were a bit confused by how the seeding worked. Since the folks who would use the code are most likely students, teachers, and presenters (not necessarily Python experts), I decided to revert to an earlier solution. In this case, it is fair to trade a bit of elegance for easier intuitiveness.<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Thanks again,</div><div style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Adil</div></div>
</blockquote></div><br></div></div></div>