Skip to main content

npc_sessions

neuropixels cloud sessions

Tools for accessing data and metadata for behavior and epyhys sessions from the Mindscope Neuropixels team - in the cloud.

PyPI Python version

Coverage CI/CD GitHub issues

quickstart

Make a conda environment with python>=3.9 and simply pip install the npc_sessions package:

conda create -n npc_sessions python>=3.9
conda activate npc_sessions
pip install npc_sessions
>>> from npc_sessions import DynamicRoutingSession, get_sessions;

# each object is used to get metadata and paths for a session:         
>>> session = DynamicRoutingSession('668755_2023-08-31')  
>>> session.is_ephys                                
True
>>> session.stim_paths[0].stem                      
'DynamicRouting1_668755_20230831_131418'
# data is processed on-demand to generate individual pynwb modules:
>>> session.subject                                 # doctest: +SKIP
  subject pynwb.file.Subject at 0x1999418231888
  Fields:
    age: P205D
    age__reference: birth
    date_of_birth: 2023-02-06 20:23:02-08:00
    genotype: wt/wt
    sex: M
    species: Mus musculus
    strain: C57BL6J(NP)
    subject_id: 668755

# a full NWBFile instance can also be generated with all currently-available data:
>>> session.nwb                                     # doctest: +SKIP
root pynwb.file.NWBFile at 0x...
Fields:
  acquisition: {
    lick spout <class 'ndx_events.events.Events'>
  }
  devices: {
    18005102491 <class 'pynwb.device.Device'>,
    18005114452 <class 'pynwb.device.Device'>,
    18005123131 <class 'pynwb.device.Device'>,
    18194810652 <class 'pynwb.device.Device'>,
    19192719021 <class 'pynwb.device.Device'>,
    19192719061 <class 'pynwb.device.Device'>
  }
   ...  

# loop over all currently-tracked sessions using the session-generator:
>>> all(s.session_start_time.year >= 2022 for s in get_sessions()) # doctest: +SKIP
True
>>> trials_dfs = {}
>>> for session in get_sessions():                  # doctest: +SKIP
...     trials_dfs[session.id] = session.trials[:]

to develop with conda

To install with the intention of contributing to this package:

  1. create a conda environment:
conda create -n npc_sessions python>=3.9
conda activate npc_sessions
  1. clone npc_sessions from github:
git clone git@github.com:AllenInstitute/npc_sessions.git
  1. pip install all dependencies:
cd npc_sessions
pip install -e .

Hierarchy of required packages

packages

Current NWB components

key data types

(the following all have a description field, as well as other type-specific attributes)

  • DynamicTable: for general tabular data

    • e.g. nwb.units
    • each column in the table is stored as a vector, which can be accessed individually (fast)
    • can be accessed as a pandas dataframe with nwb.units[:], but requires reading all data in all columns (slow)
    • as well as individual values, cells in the table can contain multidimensional arrays. These are represented differently depending on location:
      • in the pandas dataframe, these are represented as one would expect:
        • nwb.units[:].spike_times.iloc[0] is a 1-D array
        • nwb.units[:].waveform_mean.iloc[0] is a 2-D array (time x channels)
      • in the non-dataframe memory representation, there are sometimes two components, where the *_index is the one that should be used:
        • nwb.units.spike_times is a 1-D array of all spike times for all units, in chronological order (float)
        • nwb.units.spike_times_index is a list (len = num units) of arrays (len = num spikes for each unit)
      • on disk, these columns separated columns are different again, for example:
        • /nwb/units/spike_times is a 1-D array of all spike times for all units, in chronological order (float)
        • /nwb/units/spike_times_index is a 1-D array of values corresponding to the end of each unit's times in /nwb/units/spike_times:
          • the first unit's spike times are in spike_times[: spike_times_index[0]]
          • the second unit's are in spike_times[spike_times_index[0]: spike_times_index[1]]
  • TimeIntervals: for tabular data where each row is an interval of time

    • a subclass of DynamicTable which must have a start_time and stop_time column, plus any other user-defined columns
  • TimeSeries: for general array data

    • has an array of data (1-D or N-D, with time as first dimension)
    • has units as a string
    • has either:
      • timestamps (same length as data)
      • starting_time and rate (assumed to be constant)
  • ElectricalSeries: for ephys array data

    • a subclass of TimeSeries with units fixed as volts
  • Events: an NWB extension for discrete event times

    • like the TimeSeries class, but only has timestamps, without values for data (think: lick times)

  • session metadata (multiple attributes)

  • subject (multiple attributes)

  • devices: DynamicTable

    • physical probes (model, serial number)
    • currently only neuropixels probes
  • electrode_groups: DynamicTable

    • represents the group of channels on one probe inserted in the brain
    • has session-specific info, like position relative to other probes or stereotactic coords
  • electrodes: DynamicTable

    • individual channels on a probe
    • has CCF coords
  • units: DynamicTable

    • metrics, links to electrodes via peak_channel
  • epochs: TimeIntervals

    • start/stop time of each stim block
    • has a list of tags (includes TaskControl subclass name)
  • intervals: Mapping[str, TimeIntervals]

    • 1x table per stim epoch with trials
    • behavior performance table (each block an interval)
  • trials: TimeIntervals

    • same as intervals[DynamicRouting1]
  • invalid_times: TimeIntervals

  • acquisition: Mapping[str, Any] raw data

    • if is_ephys:
      • raw AP: Mapping[str, ElectricalSeries]
      • raw LFP: Mapping[str, ElectricalSeries]
    • if is_sync:
      • lick_sensor_rising_edges: Events
      • lick_sensor_falling_edges: Events
    • if is_task:
      • rewards: Events
    • if is_video:
      • video frame times: 1x Events per camera
  • processing: Mapping[str, Any] processed/filtered data

    • behavior: Mapping[str, Any]
      • licks: Events
        • from sync or stim file
      • running_speed: TimeSeries
        • from stim file, enhanced with sync info if available
    • ecephys: Mapping[str, Any]
  • analysis: Mapping[str, Any] derived data, results

    • if is_ephys:
      • all_spike_histograms: 1x TimeSeries per probe
      • drift_maps: ImageSeries
    • if is_task:
      • performance: TimeIntervals

Todo:

  • filtered LFP
  • stimulus templates (vis, aud, opto)
  • OptogeneticStimulusSite
  • analysis -> RFMaps
  • per-unit response metric for each stim modality

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

npc_sessions-0.0.285.tar.gz (89.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

npc_sessions-0.0.285-py3-none-any.whl (93.7 kB view details)

Uploaded Python 3

File details

Details for the file npc_sessions-0.0.285.tar.gz.

File metadata

  • Download URL: npc_sessions-0.0.285.tar.gz
  • Upload date:
  • Size: 89.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for npc_sessions-0.0.285.tar.gz
Algorithm Hash digest
SHA256 d6a4e55e2b304275ba3563d6f09374c2713108a52f7b367c42e83e7065be6a0e
MD5 51cf4f1fe264404aa3a7a8a6e05b2394
BLAKE2b-256 b6a1cf514437da1c517abc3f98bef84f6b5841135bd49cf7be26077e5b154964

See more details on using hashes here.

File details

Details for the file npc_sessions-0.0.285-py3-none-any.whl.

File metadata

  • Download URL: npc_sessions-0.0.285-py3-none-any.whl
  • Upload date:
  • Size: 93.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for npc_sessions-0.0.285-py3-none-any.whl
Algorithm Hash digest
SHA256 98341243caef2a94a2c4c19362be7ab36f0c9b701321a58616e46762ac795b7e
MD5 9e5ae8d606e7badb6579d4834e0f44b7
BLAKE2b-256 b5b4b8af723c472851e14085731f85923e548319d81820438a66f6e4d308b1e7

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.289

2 files

0.0.288

2 files

0.0.287

2 files

0.0.286

2 files

This release

0.0.285 This release

2 files

0.0.284

2 files

0.0.283

2 files

0.0.282

2 files

0.0.281

2 files

0.0.280

2 files

0.0.279

2 files

0.0.278

2 files

0.0.277

2 files

0.0.276

2 files

0.0.275

2 files

0.0.274

2 files

0.0.273

2 files

0.0.272

2 files

0.0.271

2 files

0.0.270

2 files

0.0.269

2 files

0.0.268

2 files

0.0.267

2 files

0.0.266

2 files

0.0.265

2 files

0.0.264

2 files

0.0.263

2 files

0.0.262

2 files

0.0.261

2 files

0.0.260

2 files

0.0.259

2 files

0.0.258

2 files

0.0.257

2 files

0.0.256

2 files

0.0.255

2 files

0.0.254

2 files

0.0.253

2 files

0.0.252

2 files

0.0.251

2 files

0.0.250

2 files

0.0.249

2 files

0.0.248

2 files

0.0.247

2 files

0.0.246

2 files

0.0.245

2 files

0.0.244

2 files

0.0.243

2 files

0.0.242

2 files

0.0.241

2 files

0.0.240

2 files

0.0.239

2 files

0.0.238

2 files

0.0.237

2 files

0.0.236

2 files

0.0.235

2 files

0.0.234

2 files

0.0.233

2 files

0.0.232

2 files

0.0.231

2 files

0.0.230

2 files

0.0.229

2 files

0.0.228

2 files

0.0.227

2 files

0.0.226

2 files

0.0.225

2 files

0.0.224

2 files

0.0.223

2 files

0.0.222

2 files

0.0.221

2 files

0.0.220

2 files

0.0.219

2 files

0.0.218

2 files

0.0.217

2 files

0.0.216

2 files

0.0.215

2 files

0.0.214

2 files

0.0.213

2 files

0.0.212

2 files

0.0.211

2 files

0.0.210

2 files

0.0.209

2 files

0.0.208

2 files

0.0.207

2 files

0.0.206

2 files

0.0.205

2 files

0.0.204

2 files

0.0.203

2 files

0.0.202

2 files

0.0.201

2 files

0.0.200

2 files

0.0.199

2 files

0.0.198

2 files

0.0.197

2 files

0.0.196

2 files

0.0.195

2 files

0.0.194

2 files

0.0.193

2 files

0.0.192

2 files

0.0.191

2 files

0.0.190

2 files

0.0.189

2 files

0.0.188

2 files

0.0.187

2 files

0.0.186

2 files

0.0.185

2 files

0.0.184

2 files

0.0.183

2 files

0.0.182

2 files

0.0.181

2 files

0.0.180

2 files

0.0.179

2 files

0.0.178

2 files

0.0.176

2 files

0.0.174

2 files

0.0.173

2 files

0.0.172

2 files

0.0.171

2 files

0.0.170

2 files

0.0.169

2 files

0.0.168

2 files

0.0.167

2 files

0.0.166

2 files

0.0.165

2 files

0.0.164

2 files

0.0.163

2 files

0.0.162

2 files

0.0.161

2 files

0.0.160

2 files

0.0.159

2 files

0.0.158

2 files

0.0.157

2 files

0.0.156

2 files

0.0.155

2 files

0.0.154

2 files

0.0.153

2 files

0.0.152

2 files

0.0.151

2 files

0.0.150

2 files

0.0.149

2 files

0.0.148

2 files

0.0.147

2 files

0.0.146

2 files

0.0.145

2 files

0.0.144

2 files

0.0.143

2 files

0.0.142

2 files

0.0.141

2 files

0.0.140

2 files

0.0.139

2 files

0.0.138

2 files

0.0.137

2 files

0.0.136

2 files

0.0.135

2 files

0.0.134

2 files

0.0.133

2 files

0.0.132

2 files

0.0.131

2 files

0.0.130

2 files

0.0.129

2 files

0.0.128

2 files

0.0.127

2 files

0.0.126

2 files

0.0.125

2 files

0.0.124

2 files

0.0.123

2 files

0.0.122

2 files

0.0.121

2 files

0.0.120

2 files

0.0.119

2 files

0.0.118

2 files

0.0.117

2 files

0.0.116

2 files

0.0.115

2 files

0.0.114

2 files

0.0.113

2 files

0.0.112

2 files

0.0.111

2 files

0.0.110

2 files

0.0.109

2 files

0.0.108

2 files

0.0.107

2 files

0.0.106

2 files

0.0.105

2 files

0.0.104

2 files

0.0.103

2 files

0.0.102

2 files

0.0.101

2 files

0.0.100

2 files

0.0.99

2 files

0.0.98

2 files

0.0.97

2 files

0.0.96

2 files

0.0.95

2 files

0.0.94

2 files

0.0.93

2 files

0.0.92

2 files

0.0.91

2 files

0.0.90

2 files

0.0.89

2 files

0.0.88

2 files

0.0.87

2 files

0.0.86

2 files

0.0.85

2 files

0.0.84

2 files

0.0.83

2 files

0.0.82

2 files

0.0.81

2 files

0.0.80

2 files

0.0.79

2 files

0.0.78

2 files

0.0.77

2 files

0.0.76

2 files

0.0.75

2 files

0.0.74

2 files

0.0.73

2 files

0.0.72

2 files

0.0.71

2 files

0.0.70

2 files

0.0.69

2 files

0.0.68

2 files

0.0.67

2 files

0.0.66

2 files

0.0.65

2 files

0.0.64

2 files

0.0.63

2 files

0.0.62

2 files

0.0.61

2 files

0.0.60

2 files

0.0.59

2 files

0.0.58

2 files

0.0.57

2 files

0.0.56

2 files

0.0.55

2 files

0.0.54

2 files

0.0.53

2 files

0.0.52

2 files

0.0.51

2 files

0.0.50

2 files

0.0.49

2 files

0.0.48

2 files

0.0.47

2 files

0.0.46

2 files

0.0.45

2 files

0.0.44

2 files

0.0.43

2 files

0.0.42

2 files

0.0.41

2 files

0.0.40

2 files

0.0.39

2 files

0.0.38

2 files

0.0.37

2 files

0.0.36

2 files

0.0.35

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.31

2 files

0.0.30

2 files

0.0.29

2 files

0.0.28

2 files

0.0.27

2 files

0.0.26

2 files

0.0.25

2 files

0.0.24

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page