Skip to content

Instantly share code, notes, and snippets.

@neuromusic
Last active September 4, 2018 19:42
Show Gist options
  • Save neuromusic/7e197ed1d54c03bc9f4ad115b53762c3 to your computer and use it in GitHub Desktop.
Save neuromusic/7e197ed1d54c03bc9f4ad115b53762c3 to your computer and use it in GitHub Desktop.
example of nwb viz library API
from nwbviz import view, option
@view(requirements='DfOverF')
def rastermap(nwbfile):
""" Generates a sorted raster map of calcium data
https://github.com/MouseLand/rastermap
Parameters:
-------
nwbfile : pynwb NwbFile instance
Returns:
-------
ax : matplotlib axes
"""
<...>
return ax
@option('Lower bound',keyword='lower',default=0.0,help="Lower bound of window")
@option('Upper bound',keyword='upper',default=0.5,help="Upper bound of window")
@view(requirements=["DfOverF", "ImageSeries"])
def image_evoked_calcium_response(nwbfile,lower,upper):
""" Calculates mean calcium response to each stimulus image.
Parameters:
-------
nwbfile : pynwb NwbFile instance
lower : lower bound of window
upper : upper bound of window
Returns:
-------
hv : Holoviews object
"""
<...>
return hv
@tarelli
Copy link

tarelli commented Sep 3, 2018

@neuromusic @afonsobspinto @nicain @bendichter Looks good, so you are proposing to remove the JSON file and use Python annotations instead? Regarding using direct references to packages for the requirements that might work for simple scenarios but as Justin points out it's likely we might have to have something more complex to specify these requirements (e.g. preference for the value of a given attribute) at which point that will break while in the other case we can make up some simple syntax or reuse some preexisting notation.

@neuromusic
Copy link
Author

@tarelli yes, I suppose my proposal is twofold...

  1. factor out the plotting functions themselves to a separate plotting library
  2. replace the JSON with python decorators

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment