I thought I would move our discussion for documentation here, just so that if members of the community wanted to add things they could and I could put them in what I think is a rough priority order:
a) Continue to add typing/docstrings. IDEs list these now so beginner and advanced users can benefit from getting this both from their IDE and then going to the API documentation if needed.
b) I originally said to flesh out beginner installation, but instead I would recommend a completely fresh beginners page in the documentation. The docs are super dense at SpikeInterface, so having a clickable bookmark for beginners would help them navigate to the real quick tips to get started. As part of this I would recommend a demonstration of conda env to explain isolating scientific packages with a link to full installation tips. NumPy has great documentation for switching from Matlab numpy, that could also be linked to help beginners learn differences from 1 based to 0 based etc (and () to []). A small subsection could explain the importance of wiring for electrode to recording equipment. And a small section could describe 'lazy' vs persistent parts of SI. Then a super quick use of the toy_example function creating a recording and a sorting to explain the difference between those finishing with a waveform_extractor so beginners know the three main consumables of the process. You can finish with a section that says a simple workflow would be a pipeline of extract-sort-phy, but once you become comfortable with SI you can add in preprocessing, post processing, qc, merging, etc or try benchmarking (all with links to the deeper dive sections). I think the goal for this section would be short sections that hit the major highlights and then links to the rest of the documentation so that if they struggle at any step in the process they know which section to click on to get a better understanding of the step they are struggling with.
c) A new subsection of the main docs could do a deeper dive into the comp sci tricks of the trade that SI uses to help beginner-intermediate users better understand when to use dump/save and when lazy is beneficial. To understand how jobs works and maybe even when playing with these features to look at htop, activity monitor, or task manager to monitor cpu and RAM usage to understand some of how changing these global_kwargs works on their specific computer.
d) finally, a section that goes a little deeper into Neo and ProbeInterface. The Neo documentation is going through a rewrite and is super dense as well. So at least a description of streams vs channels with an example or ideally a couple examples of super common recording equipment based on user issues. Same for ProbeInterface. There's one nice example, and the link to ProbeInterface, but I would consider fleshing this out to explain why wiring is important and maybe showing an example of how the wiring works. For example, if I have a new probe-wiring combo that doesn't exist on PI and then I open an issue and it doesn't get added for a while I might leave SI. But if I can make my own probe map and know how to load it into SI then I stay with my own map, while I wait for the "professional" one. PI goes through this, but the more documentation redirects the more people you lose.
e) bonus. spiketutorials are linked in the readme of the Github, but when I quickly glance at the documentation, I don't see them. If the examples aren't easy to find, then a chunk of people won't find them. Maybe just at least add the link into the how to section. Relating the examples back to (b), the mega example is great for people with some python and python troubleshooting experience, but is pretty overwhelming if you're brand new--so really the example in b would be simplifying the how to example to the core of using spikeinterface to start with and going section by section with headers so people know exactly where their problem is when trying to do it themselves.
I thought I would move our discussion for documentation here, just so that if members of the community wanted to add things they could and I could put them in what I think is a rough priority order:
a) Continue to add typing/docstrings. IDEs list these now so beginner and advanced users can benefit from getting this both from their IDE and then going to the API documentation if needed.
b) I originally said to flesh out beginner installation, but instead I would recommend a completely fresh beginners page in the documentation. The docs are super dense at SpikeInterface, so having a clickable bookmark for beginners would help them navigate to the real quick tips to get started. As part of this I would recommend a demonstration of conda env to explain isolating scientific packages with a link to full installation tips. NumPy has great documentation for switching from Matlab numpy, that could also be linked to help beginners learn differences from 1 based to 0 based etc (and () to []). A small subsection could explain the importance of wiring for electrode to recording equipment. And a small section could describe 'lazy' vs persistent parts of SI. Then a super quick use of the
toy_example
function creating a recording and a sorting to explain the difference between those finishing with a waveform_extractor so beginners know the three main consumables of the process. You can finish with a section that says a simple workflow would be a pipeline of extract-sort-phy, but once you become comfortable with SI you can add in preprocessing, post processing, qc, merging, etc or try benchmarking (all with links to the deeper dive sections). I think the goal for this section would be short sections that hit the major highlights and then links to the rest of the documentation so that if they struggle at any step in the process they know which section to click on to get a better understanding of the step they are struggling with.c) A new subsection of the main docs could do a deeper dive into the comp sci tricks of the trade that SI uses to help beginner-intermediate users better understand when to use dump/save and when lazy is beneficial. To understand how jobs works and maybe even when playing with these features to look at htop, activity monitor, or task manager to monitor cpu and RAM usage to understand some of how changing these global_kwargs works on their specific computer.
d) finally, a section that goes a little deeper into Neo and ProbeInterface. The Neo documentation is going through a rewrite and is super dense as well. So at least a description of streams vs channels with an example or ideally a couple examples of super common recording equipment based on user issues. Same for ProbeInterface. There's one nice example, and the link to ProbeInterface, but I would consider fleshing this out to explain why wiring is important and maybe showing an example of how the wiring works. For example, if I have a new probe-wiring combo that doesn't exist on PI and then I open an issue and it doesn't get added for a while I might leave SI. But if I can make my own probe map and know how to load it into SI then I stay with my own map, while I wait for the "professional" one. PI goes through this, but the more documentation redirects the more people you lose.
e) bonus. spiketutorials are linked in the readme of the Github, but when I quickly glance at the documentation, I don't see them. If the examples aren't easy to find, then a chunk of people won't find them. Maybe just at least add the link into the how to section. Relating the examples back to (b), the mega example is great for people with some python and python troubleshooting experience, but is pretty overwhelming if you're brand new--so really the example in b would be simplifying the how to example to the core of using spikeinterface to start with and going section by section with headers so people know exactly where their problem is when trying to do it themselves.