Allen Brain Institute - Mouse Connectivity API and Mouse Connectivity Cache examples
Question: I'm trying to follow the [Mouse Connectivity
sdk](http://alleninstitute.github.io/AllenSDK/connectivity.html) and get their
two examples working.

`pd` returns None or all projection signal density experiments. Why might this
be?

    
    
    from allensdk.api.queries.mouse_connectivity_api import MouseConnectivityApi
    
    mca = MouseConnectivityApi()
    
    # get metadata for all non-Cre experiments
    experiments = mca.experiment_source_search(injection_structures='root', transgenic_lines=0)
    
    # download the projection density volume for one of the experiments
    #pd = mca.download_projection_density('example.nrrd', experiments[0]['id'], resolution=25)
    
    for exp in range(len(experiments)):
        pd = mca.download_projection_density('example.nrrd', experiments[exp]['id'], resolution=25)
        print(type(pd))
    

Results:

    
    
    C:\Anaconda\python.exe C:/Users/user/PycharmProjects/MyFirstAllenBrain/Test.py
    <type 'NoneType'>
    <type 'NoneType'>
    <type 'NoneType'>
    <type 'NoneType'>
    <type 'NoneType'>
    <type 'NoneType'>
    ... etc
    

The thing though is, is that `experiments` does recieve a value so it appears
to be the case that the MouseConnectivityApi and nrrd (which I installed as
per the following [post](http://stackoverflow.com/questions/32240133/pip-
install-pynrrd)) are working appropriately.

See here: [![enter image description
here](http://i.stack.imgur.com/eXdHi.png)](http://i.stack.imgur.com/eXdHi.png)

Right, and now the second example

    
    
    from allensdk.core.mouse_connectivity_cache import MouseConnectivityCache
    
    # tell the cache class what resolution (in microns) of data you want to download
    mcc = MouseConnectivityCache(resolution=25)
    
    # use the ontology class to get the id of the isocortex structure
    ontology = mcc.get_ontology()
    isocortex = ontology['Isocortex']
    
    # a list of dictionaries containing metadata for non-Cre experiments
    experiments = mcc.get_experiments(injection_structure_ids=isocortex['id'])
    
    # download the projection density volume for one of the experiments
    pd = mcc.get_projection_density(experiments[0]['id'])
    

This is copied word for word from Allen and yet this is the error message I
get:

    
    
    C:\Anaconda\python.exe C:/Users/user/PycharmProjects/MyFirstAllenBrain/Test.py
    Traceback (most recent call last):
      File "C:/Users/user/PycharmProjects/MyFirstAllenBrain/Test.py", line 14, in <module>
        pd = mcc.get_projection_density(experiments[0]['id'])
      File "C:\Users\user\AppData\Roaming\Python\Python27\site-packages\allensdk\core\mouse_connectivity_cache.py", line 170, in get_projection_density
        return nrrd.read(file_name)
      File "C:\Anaconda\lib\site-packages\nrrd.py", line 384, in read
        data = read_data(header, filehandle, filename)
      File "C:\Anaconda\lib\site-packages\nrrd.py", line 235, in read_data
        mmap.MAP_PRIVATE, mmap.PROT_READ)
    AttributeError: 'module' object has no attribute 'MAP_PRIVATE'
    
    Process finished with exit code 1
    

Why might this occur?

And again as before (no need for another picture I assume), the `experiments`
variable does recieve what appears to be values for each experiment.


Answer: Unfortunately this is a Windows-specific issue with the pynrrd/master github
repository right now. I know that one specific revision works:

<https://github.com/mhe/pynrrd/commit/3c0f3d577b0b435fb4825c14820322a574311af0>

To install this revision from a windows command prompt, you can:

    
    
    > git clone https://github.com/mhe/pynrrd.git
    > cd pynrrd
    > git checkout 3c0f3d5
    > cd ..
    > pip install --upgrade pynrrd\
    

The backslash on the end is important. It tells pip to install from a local
path instead of checking PyPI.

Issue logged: <https://github.com/mhe/pynrrd/issues/18>

