-
-
Notifications
You must be signed in to change notification settings - Fork 489
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Working on documentation update - feedback desired #92
Comments
I have opened the "Issues" mechanism on both repositories, if people prefer to comment that way, BTW. It now has a rather more complete set of module summaries including interfaces (although I'm still working on expanding them further; these are linked to a highlighted copy of the source), clarified some things regarding defaults in the configuration file, and quite a few other things. I'd greatly appreciate some feedback at this point, although I'll continue to work on it on my own. As well as completing the module summaries, I'm also thinking of putting in more material in the NEAT summary, regarding speciation, genomic distance determination, and similar matters. -Allen |
Going through the code for the documentation lead me to find the above-referenced bug, incidentally. "My" documentation version does not have the code correction, incidentally. |
Hey thanks for improving the docs! I'll try to carve out some time over the weekend to check it out. |
Quite welcome; I'm partially doing it as part of teaching myself Python, and partially to keep in practice doing technical editing/writing, and partially because I like helping... plus I'm a perfectionist. :-} And I understand on time limits... -Allen |
I'm now working on documentation for my fork's config_work branch (mentioned some places in the current documentation); I will work on the documents for the update by @bennr01 as part of that. -Allen |
@drallensmith thanks for improving the documentation and for documenting #96. If you need any explanation or help on the features i added, please tell me. |
Well, I've added the threaded.py module to module_summaries.rst in my fork's config_work branch; I did have one question regarding _worker() - what would stop it by turning off For distributed.py, I have the difficulty that BTW, multiprocessing.cpu_count() can cause a NotImplementedError (I've modified it to be in a |
@drallensmith the loop used by "Process" would be the most accurate term, but it still has two issues:
Regarding |
Hmm... my question may not have been clear. Ah. Given that all of the implementations of Python that I'm working with use a GIL, I haven't looked at Perhaps "compute node"? I suspected that hyperthreading would be why it would return more than the number of physical cores. However, hyperthreading (at least in a 2011 machine; some things apparently changed with 2015+ Intel processors) primarily benefits non-cpu-bound threads, as I understand it; it allows them to wait on I/O (usually) while being able to quickly be switched into execution when that other resource is available. In other words, whether your machine, for instance, should be doing 4 or 8 evaluation processes will depend on whether the fitness function is CPU-bound or not. I'll see if I can put something into the documentation about this. (I confess I hadn't thought about this re hyperthreading quite this explicitly before; I just know that anything above a load average of 2 radically slows down the machine.) |
@drallensmith. Yes, The term compute node is fine. Regarding I just took a look at #97. Thanks for trying to fix/improve |
I/O bound was an unfortunately confusing example - the real question, as far as I can tell, is whether the process would be sitting around waiting for something other than access to the cpu's execution machinery. However, I am most definitely not an expert in the field either. Perhaps users should be advised to experiment, and that it may be eval_function-dependent? OK, I'm going with Regarding Regarding |
Re |
@drallensmith regarding |
@bennr01 Regarding |
drallensmith.github.io has an updated version of the documentation for my fork's config_work branch, including preliminary documentation for |
@drallensmith The documentation of in
|
@bennr01 - thanks! I've corrected the above; an updated version should be up. (Regarding the last of the above, I am still getting my brain to understand the differences between Perl's A documentation TODO that isn't for your code, but I'm curious if you - or anyone else - could help me understand, is for |
@drallensmith when defining and/or calling a function in python, there are 4 different types of arguments. Regarding authkey: Sorry, my mistake. I mainly use python 2 and not python3. I could not yet take a look at the other TODOs. Regarding None: Should i try to explain the difference to you or did you mean that you do know the difference but are often forgetting the difference? |
@bennr01: Please take a look at issue #101 if you would. Regarding iterkeys (and similar for the other two): Thank you; I think I wasn't clear. My puzzlement is how the function is working internally - it's calling, for Python3, d.keys(**kw); for Python2, d.iterkeys(**kw). I am confused by calling, effectively, keys(self, **kw) with self being 'd', and similarly for iterkeys. I've checked the documentation for keys (Python3) and iterkeys (Python2) and none mention putting anything in the parentheses. Yes, it's apparently valid... I'm just trying to figure out what's happening (and why nothing else is mentioning it). Why is it doing it? My best guess is that it's in case it gets fed a series of key=value pairs... but as well as a dict, which still seems rather odd (the d, as you noted, should still be required; OTOH, **kw in the call as opposed to the function definition should result in the key=value pairs being converted into a dict, IIRC). I may try inquiring via the Regarding authkey: No problem, I usually use python2 myself, but do try to look in both 2.7.13 and 3.5's libraries. (I believe it's bytes because of network issues and that it is evidently being used in a cryptographic hash procedure or equivalent - one way to do it would be for the Regarding other TODOs: Again, no problem, I understand fully. Regarding None: I do know the difference, but am often forgetting it, or more importantly often forget how it affects, for instance, function calls. (Ironically, with Perl I set the "undefined variable" warning to a fatal error, matching Python's behavior, but am used to reading other people's code that does not.) Thanks for the offer to explain! |
Again big thanks for the massive update to the docs! |
Again, quite welcome; happy to help! |
NOTE: I am now working on documentation in my fork's config_work branch; see drallensmith.github.io for a recent version.
Hi. I'm working on a documentation update, based on the current master files (although I'll need to pull the most recent few changes, of course...). It's nowhere near where it should be for even thinking about merging, but I'd appreciate any feedback people want to give on how it's going so far. I've added a glossary, started on putting in some module summaries, enabled an index (and a module index), and a few other things. I've put it in a docs_update branch on my fork https://github.com/drallensmith/neat-python/tree/docs_update and have also put up the sphinx-build html version at https://drallensmith.github.io/.
-Allen
The text was updated successfully, but these errors were encountered: